Mon projet comprend un service de visualisation et un service d'interface. Le répertoire du projet ressemble à ceci:
cd Myproject/springboot2/ mvn spring-boot:run
Springboot1 et springboot2 peuvent être exécutés séparément. La façon dont je les démarre maintenant est d'ouvrir les deux terminaux et d'exécuter les commandes suivantes:
springboot1
cd Myproject/springboot1/ mvn spring-boot:run
springboot2
Myproject/ springboot1/ springboot2/
Y en a-t-il comment démarrer deux projets en même temps? Par exemple, ajoutez un fichier global pom.xml au répertoire Myproject et exécutez mvn spring-boot: run directement dans le répertoire Myproject.
3 Réponses :
Essayez ceci
mvn springboot1 / spring-boot: run | mvn springboot2 / spring-boot: exécuter
Oui , comme vous l'avez mentionné, vous avez besoin de quelque chose comme global pom xml way, que vous pouvez obtenir en combinant deux projets en tant que modules à votre application d'emballage (Myproject). Laissez-moi vous donner une idée:
Créez une nouvelle application springBoot avec un fichier pom global et déplacez tous les fichiers jar ou dépendances courants (projets 1 et 2) vers ce fichier pom global. De plus, comme chaque application en tant qu'application principale, supprimez cela car il n'est plus nécessaire en tant qu'entité distincte, mais assurez-vous également que vous avez un code personnalisé dans leur fichier principal respectif que de déplacer ce code vers le fichier principal du projet d'empaquetage.
li >Créez les projets 1 et 2 en tant que packages jar et ajoutez-les au projet de packaging en tant que dépendances.
Le pom interne du projet springboot1 ressemblera à:
@SpringBootApplication @ComponentScan(basePackages = {"org.springboot1.module.one.*","org.springboot2.module.two.*"}) public class Myproject { public static void main( String[] args ) { SpringApplication.run(Myproject.class, args); }
Le pom interne du projet springboot2 ressemblera à:
... <dependency> <groupId>org.springboot1.module</groupId> <artifactId>springboot1</artifactId> <version>1.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.springboot2.module</groupId> <artifactId>springboot2</artifactId> <version>1.0-SNAPSHOT</version> </dependency> ...
Le pom du projet de packaging ressemblera à ceci:
... <groupId>org.springboot2.module</groupId> <artifactId>springboot2</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> ...
Dans votre fichier principal d'emballage, ajoutez de nouveaux emplacements des @Components, qui proviennent des dépendances
... <groupId>org.springboot1.module</groupId> <artifactId>springboot1</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging> ...
}
Exécutez la classe principale de l'application d'empaquetage et elle commencera avec les deux projets dépendants.
J'espère que les étapes ci-dessus fonctionneront avec quelques changements supplémentaires en fonction de la structure de votre projet. Aussi, pour plus de clarté, vous pouvez également vous référer à Maven Project_Aggregation
Ce faisant, dois-je d'abord emballer springboot1 et springboot2 dans des bocaux? Lancer mvn spring-boot: exécuter directement dans le répertoire du projet ne semble pas fonctionner.
Comme je l'ai mentionné ci-dessus dans le pom interne respectif le type d'emballage est jar
, vous n'avez donc pas besoin de les construire séparément, plutôt que de lancer directement mvn clean install
sur le projet principal qui emballera les dans jar dans le chemin de classe du projet principal car vous les avez déjà déclarés comme dépendances dans le fichier pom global (vérifiez ma réponse).
Merci beaucoup pour votre réponse, mais j'ai encore quelques problèmes. Maven me rappelle qu'il ne trouve pas org.springboot1.module, org.springboot2.module. Je ne sais pas ce qui a causé le problème. J'ai téléchargé mon code sur github. Pouvez-vous m'aider pour le débogage? github.com/jiangbai333/springboot-module-test
Voici ma suggestion avant même de commencer le débogage. Regardez le nom org.springboot1.module
n'était qu'un exemple pour votre référence dans ma réponse. Alors, choisissez une application simple à démarrage à ressort et essayez maintenant de les coupler, puis voyez où elle se coince et corrigez-la une par une. Comme je l'ai déjà mentionné, cela ne va pas être simple, vous devez vous démener pour que cela fonctionne. Tous mes vœux!
Vous pouvez créer une application Spring Boot wrapper qui les lance en tant que servlets séparés. Ils doivent être dans des contextes d'application frères et partager l'application wrapper en tant que contexte parent. Cela ressemblerait à peu près à ceci:
public static void main(String[] args) { new SpringApplicationBuilder().parent(WrapperApplication.class).web(WebApplicationType.NONE) .child(Application1.class).web(WebApplicationType.SERVLET) .sibling(Application2.class).web(WebApplicationType.SERVLET) .run(args); }
si vous utilisez IntelliJ, vous pouvez tous les exécuter en même temps à l'aide du tableau de bord Exécuter
@Kartik Merci pour votre réponse, mais je veux me débarrasser de l'IDE. Le scénario est comme ça. Les deux projets sont développés par deux groupes de personnes. J'espère qu'après le développement d'une version, elle sera automatiquement construite après avoir été soumise à notre serveur git. Et déployez ces deux projets. Je peux utiliser le shell pour l'implémenter, mais je veux savoir s'il existe une manière plus élégante.