2013-02-27 5 views
2

Mon jardesc fonctionnait bien jusqu'à hier quand j'ai converti mon projet en maven.jardesc crée un dossier "src" dans le fichier jar

Maintenant, pour une raison quelconque lorsque je crée un fichier jar contenant le code et les paquets: org.javacode et org.resource, je reçois les dossiers dans le fichier jar suivants:

org/javacode src/org/ressources

Il semble fonctionner correctement pour les paquets java, mais pour les paquets qui contiennent des ressources image, il crée un dossier src supplémentaire à la racine.

Comment puis-je résoudre ce problème?

Edit 1: Voici le pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>Energy3D</groupId> 
    <artifactId>Energy3D</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <build> 
    <sourceDirectory>src</sourceDirectory> 
    <resources> 
     <resource> 
     <directory>src</directory> 
     <excludes> 
      <exclude>**/*.java</exclude> 
     </excludes> 
     </resource> 
    </resources> 
    <plugins> 
     <plugin> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <version>2.3.2</version> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 
    <dependencies> 
    <dependency> 
     <groupId>com.ardor3d</groupId> 
     <artifactId>ardor3d-jogl</artifactId> 
     <version>0.9-SNAPSHOT</version> 
     <type>bundle</type> 
    </dependency> 
    <dependency> 
     <groupId>com.ardor3d</groupId> 
     <artifactId>ardor3d-lwjgl</artifactId> 
     <version>0.9-SNAPSHOT</version> 
     <type>bundle</type> 
    </dependency> 
    </dependencies> 
</project> 

Edit 2:

Aussi voici la partie pertinente de jardesc (le paquet correctement IUG est placé dans org/concord/energy3d/IUG cependant, le paquet d'images est placé par erreur dans src/org// concord energy3d/ressources/images lorsque le fichier jar est créé):

<javaElement handleIdentifier="=Energy3D/src&lt;org.concord.energy3d.gui"/> 
<javaElement handleIdentifier="=Energy3D/src&lt;org.concord.energy3d.resources.images"/> 
+0

S'il vous plaît poster votre POM, il pourrait aider –

+0

TERMINÉ (voir modifier 1 et modifier 2 ci-dessus). –

+0

Veuillez illustrer votre structure de répertoire actuelle. – carlspring

Répondre

0

Vous ne suivez pas les conventions Maven.

  • Vos sources doivent être sous: src/main/java

  • Vos ressources doivent être sous: src/main/resources

  • Vos sources de test doivent être au-dessous: src/test/java

  • Vos ressources de test doivent être sous: src/test/ressources

La première règle de Maven est la convention sur la configuration. Vous vous concentrez sur le bit de configuration, au lieu de suivre la convention. Si vous ne suivez pas la convention, les plugins ne trouveront pas les choses là où ils les attendent. Cela les conduira à ne pas faire ce que vous voulez, alors je vous recommande de vous y prendre correctement.

En outre, retirer cette partie de votre pom.xml:

<sourceDirectory>src</sourceDirectory> 
<resources> 
    <resource> 
    <directory>src</directory> 
    <excludes> 
     <exclude>**/*.java</exclude> 
    </excludes> 
    </resource> 
</resources> 
+0

Je l'ai fait et ensuite utilisé mvn -package au lieu de jardesc pour générer mon fichier jar. Maintenant, je reçois les ressources dans le bon dossier (par exemple, org/app/resources), mais je reçois également un duplicata des ressources dans un dossier principal (par exemple, main/org/app/resources). –

+0

Vous faites toujours des erreurs. Votre code doit passer sous 'src/main/java' - par exemple:' src/main/java/org/app/Foo.java'; et vos ressources sous 'src/main/resources' - par exemple:' src/main/resources/foo.properties'. – carlspring

+0

Voilà ce que j'ai. Par exemple, j'ai ce dossier: src/main/resources/org/concord/energy3d/resources/icons/snap.png (J'ai aussi mis les ressources src/main/comme un dossier de code source dans eclipse). Mais d'une manière ou d'une autre, dans le fichier jar, maven crée main/resources/org/concord/energy3d/resources/icons/snap.png au lieu de juste org/concord/energy3d/resources/icons/snap.png.On dirait que src/main/resources/est empaqueté à tort, mais notez que le contenu de src/main/java/est correctement empaqueté dans le fichier jar. –

Questions connexes