On Wed, 10 Sep 2008 15:23:33 +0200 Nicolas Dumoulin <nicolas.dumoulin at cemagref.fr> wrote:
Bonjour,
En attendant les réponses à mon message au sujet des règles métier des Components d'un EA, j'ai un autre problème. J'essaie de faire un projet maven qui dépend du votre, mais j'ai de gros soucis avec le module swing-generated. En effet, si je crée un projet minimal avec le fichier POM ci-joint et le code suivant : --------------8<------------------------------------------------ package fr.cemagref.simexplorer; import fr.cemagref.simexplorer.is.ui.swing.ui.SimExplorerMainUI; public class App { public static void main(String[] args) { SimExplorerMainUI mainUI = SimExplorerMainUI.getUI(); System.out.println("Hello World!"); } } --------------------------------------->8------------------------
J'obtiens : $mvn -o --debug compile + Error stacktraces are turned on. Maven version: 2.0.9 Java version: 1.6.0_06 [...] [DEBUG] Classpath: [...] [DEBUG] /home/dumoulin/.m2/simexplorer-is/simexplorer-is-swing-generated/0.1- SNAPSHOT/simexplorer-is-swing-generated-0.1-SNAPSHOT.jar [...] org.apache.maven.BuildFailureException: Compilation failure /home/dumoulin/tmp/simexplorer-is- test/src/main/java/fr/cemagref/simexplorer/App.java:[8,52] cannot access SimExplorerUI class file for SimExplorerUI not found SimExplorerMainUI mainUI = SimExplorerMainUI.getUI(); [...]
Alors que : $jar tf /home/dumoulin/.m2/simexplorer-is/simexplorer-is-swing-generated/0.1- SNAPSHOT/simexplorer-is-swing-generated-0.1-SNAPSHOT.jar | grep SimExplorerUI donne : fr/cemagref/simexplorer/is/ui/swing/ui/SimExplorerUI.class
Pouvez-vous m'aider ?
Merci
Oui il faut aussi que ce jar qui contient la classe soit références dans le class-path du jar appelant :) Maven peut faire ça pour toi avec deux plugins : maven-dependency-plugin pour preparer les dependances Example : ou il copie tous les jar de dependances dans target/dependency (le rep par defaut) <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <configuration> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution> </executions> </plugin> Puis le plugin jar qui construit le jar (il est intégré dans le cycle de vie des artifacts jar, mais on le rajoute quand même dans le build pour pouvoir le configurer). <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <manifest> <mainClass> fr.cemagref.simexplorer.App </mainClass> <addClasspath>true</addClasspath> <addExtensions/> <classpathPrefix> ./dependency/ </classpathPrefix> </manifest> </archive> </configuration> </plugin> Donc en ajoutant les deux plugins dans le <build> de ton pom cela devrait fonctionner. Tu peux vérifier que dans le jar tu as le fichier META-INF/MANIFEST.MF qui contient une entrée Class-Path avec la liste des jar de dépendances. J'espère que je suis clair ? J'ai regardé aussi ton pom et je ne comprends pas trop bien pourquoi tu inclus en dépendance import le pom de simexplorer-is ? en espérant que cela va fonctionner avec l'ajout des deux plugins Cordialement, Tony.