2010-01-29 4 views
2

J'ai une dépendance jar dans mon projet java qui contient aussi des sources et quand je lance mvn compile, ces sources java apparaissent comme des fichiers de classe dans ma sortie maven compilée: (... Comment puis-je exclure ces fichiers .. (Je ne veux que mes propres fichiers compilés dans la sortie compilée)comment exclure les sources java d'un pot tiers?

j'ai essayé quelque chose comme:

<plugin> 
<groupId>org.apache.maven.plugins</groupId> 
<artifactId>maven-compiler-plugin</artifactId> 
<version>2.1-SNAPSHOT</version> 
<configuration> 
    <excludes> 
    <exclude>**/bv/**/*.java</exclude> 
    </excludes> 
</configuration> 
</plugin> 

joué avec elle, mais ils apparaissent sans cesse dans mon maven sortie compilé :(..

Toute idée de ?

+0

Que voulez-vous dire par votre « sortie compilée Maven »? Voulez-vous simplement dire que le code source contenant la source tierce est dans votre fichier WAR? –

+0

Que voulez-vous dire par "qui contient aussi des sources"? Voulez-vous dire que le JAR contient le code source ET le code compilé? –

+0

Check out - http://old.nabble.com/Maven-compile-puts-javax.servlet.&2A-in-target-classes-td27135933.html - décrit ce problème. – Nate

Répondre

3

Ma compréhension est que c'est un comportement normal de javac qui recherche l'ensemble classpath pour les fichiers source à compiler sauf si l'option -sourcepath est donnée (et ce serait la solution ici).

Malheureusement, il y a un problème Jira au sujet -sourcepath pas passé à javac par le plugin Maven Compiler (voir MCOMPILER-98) mais il y a une solution de contournement. Alors, pourriez-vous s'il vous plaît essayer:

<plugin> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <compilerArguments> 
     <sourcepath>${project.basedir}/src/main/java</sourcepath> 
    </compilerArguments> 
    </configuration> 
</plugin> 
+0

Exactement, j'ai aussi remarqué la question en essayant de le résoudre ... a remarqué la solution de contournement mais Merci, je semble fonctionner ..;) – edbras

2

La portée fournie fonctionnerait-elle?

De: http://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html:

Cela ressemble beaucoup à la compilation, mais vous indique attendre le JDK ou un récipient pour fournir la dépendance à l'exécution .

+0

Non, car il doit être empaqueté définitivement dans un fichier war, donc je ne vois pas comment cela fonctionne ... Maintenant, j'ai les classes source tierces empaquetées dans mon propre pot en tant que fichiers de classe et le pot de troisième partie avec son Les classes et la source ...: (... Cela ne semble pas très healty ... – edbras

+0

Laissez-moi voir si j'ai bien compris: Votre pot a des dépendances sur un pot de tiers, qui doit également être compilé. . jar 3ème partie et votre pot seront alors inclus dans la guerre ... – Quotidian

0

Vous pouvez passer le paramètre -implicit:none au compilateur

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <compilerArgument>-implicit:none</compilerArgument> 
    </configuration> 
    </plugin> 
Questions connexes