2010-01-29 48 views
2

我在我的java項目中有一個jar依賴項,它包含源代碼,當我運行mvn compile時,這些java源代碼在我編譯的maven輸出中顯示爲類文件:(... 如何排除這些文件..(我只希望我自己在編譯的輸出編譯後的文件)如何從第三方jar中排除java源代碼?

我想是這樣的:

<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> 

發揮它,但他們不斷出現在我的Maven編譯輸出:(..

任何想法的?

+0

你說的你「的Maven編譯輸出」是什麼意思?你的意思是包含源代碼的第三方庫位於WAR文件中嗎? – 2010-01-29 01:31:45

+0

你是什麼意思「包含來源以及」?你的意思是說JAR包含源代碼和編譯代碼? – 2010-01-29 01:33:38

+0

結帳 - http://old.nabble.com/Maven-compile-puts-javax.servlet.&2A-in-target-classes-td27135933.html - 描述了這個問題。 – Nate 2010-01-29 02:41:47

回答

3

我的理解是,這是搜索源文件編譯,除非-sourcepath給出選項(這將在這裏是解決方案)的全類路徑的javac一種正常的行爲。

不幸的是,有一個關於-sourcepath未被Maven編譯器插件傳遞給javac的Jira問題(請參閱MCOMPILER-98),但有一個解決方法。所以,請你試試這個:

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

正確的,我也注意到了這個問題,當試圖解決它... 但是注意到瞭解決方法 謝謝,我似乎工作..;) – edbras 2010-02-01 10:17:43

2

提供的範圍是否工作?

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

這很像編譯,但 表示你所期望的JDK或 容器以提供 運行時的依賴。

+0

不,因爲它最終必須打包在戰爭文件中,所以我看不到這是如何工作的......現在我有第三方源代碼包打包在我自己的jar中作爲類文件和第三方jar與他類和源...:(...聽起來不太健康... – edbras 2010-01-29 09:04:42

+0

讓我看看我是否有這個權利:你的jar有依賴於第三方jar,這也需要編譯。第三方jar和你的jar然後將被包括在戰爭中... – Quotidian 2010-01-29 12:38:19

0

您可以將-implicit:none參數傳遞給編譯

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <compilerArgument>-implicit:none</compilerArgument> 
    </configuration> 
    </plugin> 
相關問題