2017-07-30 2 views
0

J'ai un projet Java EE simple que je porte sur Gradle. La structure que j'ai créé dans l'idée Intellij se compose de ces sous-projets:Comment ajouter correctement une dépendance à un module de même niveau en utilisant Gradle dans Intellij Idea?

\ee_forum_gradle (Uses ear plugin and deploys both the ejb and web project) 
\ee_forum_gradle_ejb 
\ee_forum_gradle_web (Uses war plugin and is dependent on the ejb project) 

Mon problème est que le projet Web dépend du projet ejb et je dois cliquer ajouter la dépendance sur le module « ee_forum_gradle_ejb_main » dans le projet web chaque fois que je l'ouvre dans Intellij, parce que chaque fois que gradle exécute les imports, ce paramètre est perdu.

J'ai essayé d'importer le projet ejb dans le projet Web en utilisant gradle. J'ajouté

includeFlat 'ee_forum_gradle_ejb' 

au settings.gradle du projet web et

compile project(':ee_forum_gradle_ejb') 

au fichier build.gradle du projet Web. Si je tente alors de l'exécuter sur mon serveur wildfly 10 je reçois l'erreur suivante:

"WFLYCTL0412: Required services that are not installed:" => ["jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_web-1.0-SNAPSHOT.war\".deploymentCompleteService","jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_web-1.0-SNAPSHOT.war\".beanmanager","jboss.persistenceunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear/ee_forum_gradle_web-1.0-SNAPSHOT.war#forum-jpa\""],"WFLYCTL0180: Services with missing/unavailable dependencies" => ["jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_ejb-1.0-SNAPSHOT.jar\".component.PostBean.START is missing [jboss.persistenceunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear/ee_forum_gradle_web-1.0-SNAPSHOT.war#forum-jpa\"]","jboss.deployment.unit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".WeldStartService is missing [jboss.persistenceunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear/ee_forum_gradle_web-1.0-SNAPSHOT.war#forum-jpa\"]","jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_web-1.0-SNAPSHOT.war\".batch.environment is missing [jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_web-1.0-SNAPSHOT.war\".beanmanager]","jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_web-1.0-SNAPSHOT.war\".weld.weldClassIntrospector is missing [jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_web-1.0-SNAPSHOT.war\".beanmanager]","jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_ejb-1.0-SNAPSHOT.jar\".component.UserBean.START is missing [jboss.persistenceunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear/ee_forum_gradle_web-1.0-SNAPSHOT.war#forum-jpa\"]","jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_ejb-1.0-SNAPSHOT.jar\".component.ThreadBean.START is missing [jboss.persistenceunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear/ee_forum_gradle_web-1.0-SNAPSHOT.war#forum-jpa\"]","jboss.deployment.unit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".deploymentCompleteService is missing [jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_web-1.0-SNAPSHOT.war\".deploymentCompleteService]","jboss.deployment.subunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear\".\"ee_forum_gradle_ejb-1.0-SNAPSHOT.jar\".component.BoardBean.START is missing [jboss.persistenceunit.\"ee_forum_gradle-1.0-SNAPSHOT.ear/ee_forum_gradle_web-1.0-SNAPSHOT.war#forum-jpa\"]"]} 

Toutes les idées sur la façon d'obtenir ce projet Gradle cours d'exécution sont très appréciés. Comme je l'ai écrit, si je clique sur ajouter une dépendance sur le module .. le projet est en cours d'exécution mais je dois répéter cette étape à chaque fois.

Répondre

0

Ok, donc la solution est d'utiliser

include('ee_forum_gradle_ejb') 

dans le fichier settings.gradle du projet Web, puis

providedCompile project(':ee_forum_gradle_ejb') 

dans le fichier build.gradle du projet Web.

Je pense que le problème avec la simple utilisation de compile, au lieu de providedCompile, est que le projet ejb est inclus deux fois et que cela perturbe le serveur.