2011-04-11 88 views
2

我使用Maven創建我寫取給定的日期/時間之間的日誌文件的切片工具的自包含可執行的JAR文件郵票&將這部分日誌複製到一個較小的文件中。當我做Maven的罐子,有依賴性,包括我的每一個班的2

mvn install 

行家創建2個jar文件,LOGCOPY-0.0.1-SNAPSHOT.jar & LOGCOPY-0.0.1-SNAPSHOT-JAR-與-dependencies.jar。奇怪的是它創建了兩個檔案,但是還有一個令人關注的問題,那就是在更大的.jar中,我寫的每個類似乎都有2個。

我的pom.xml使用Maven的組裝插件這樣的:

<plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-assembly-plugin</artifactId> 
     <executions> 
      <execution> 
       <id>create-my-bundle</id> 
       <phase>package</phase> 
       <goals> 
        <goal>single</goal> 
       </goals> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
        <archive> 
         <manifest> 
          <mainClass>com.mycompany.myproject.subproject.MainClass</mainClass> 
         </manifest> 
        </archive> 
       </configuration> 
      </execution> 
     </executions> 
    </plugin> 
</plugins> 

難道我做錯了什麼嗎?我茫然 - 谷歌似乎並沒有太多關於它&我無法找到任何東西太多就可以在O'Reilly的「Maven的:權威指南」。爲什麼它將每個類的2個放到.jar中,爲什麼它會在沒有依賴關係的情況下執行.jar以及具有哪個?因爲LOGCOPY-0.0.1-SNAPSHOT.jar由 「正常」 Maven構建創建

回答

1

兩個JAR文件生成。您剛添加的插件(作爲一項附加任務)創建LogCopy-0.0.1-SNAPSHOT-jar-with-dependencies.jar archieve。 maven-assembly-plugin不會禁用「正常」構建,它只是在包階段執行額外的任務。

+0

啊,不夠公平 - 這樣我就可以放心地忽略那臺。任何想法爲什麼我的每個課程都有兩個在那裏? – 2011-04-11 13:11:20

+0

@Matt Moran - 不,我也很奇怪。 – wesoly 2011-04-11 13:15:26

1

這聽起來像這樣的錯誤:http://jira.codehaus.org/browse/MASSEMBLY-399

我不知道你使用的是什麼版本的Maven的,但有一個評論表示您可以使用下面的XML ...

<archiverConfig><duplicateBehavior>skip</duplicateBehavior></archiverConfig> 

如果你瀏覽JIRA,你會發現很多與這個問題有關的bug。

+0

好的 - 試過了,結果似乎是一樣的。儘管如此,我還是會對JIRA有更多的瞭解。 – 2011-04-11 15:54:40

1

剛剛下載2.2-β-5的.class JAR文件副本的行家裝配plugin.The問題的固定在該版本。雖然我仍然想知道如何將相同的文件名打包到jar中的相同位置。

-1

在2.2版本的所有看起來不錯,所以暫時可以添加:

<version>2.2</version> 
相關問題