2013-05-09 51 views
0

我需要將MainClass添加到由maven生成的jar中的清單文件。搜索在SO和else,其中顯示了幾個選項 - 2這些都maven - 幫我理解標記的命名相關性

方法1:添加到Maven的編譯器插件

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <version>2.0.2</version> 
    <configuration> 
     <source>1.5</source> 
     <target>1.5</target> 
     <archive> 
     <manifest> 
     <mainClass>com.mypackage.myMainClass</mainClass> 
     <!--addClasspath>false</addClasspath--> 
     </manifest> 
     <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile> 
     </archive> 
    </configuration> 
</plugin> 

方法二:使用maven-組裝插件

<plugin> 
    <artifactId>maven-assembly-plugin</artifactId> 
    <configuration> 
     <descriptorRefs> 
      <descriptorRef>jar-with-dependencies</descriptorRef> 
     </descriptorRefs> 
     <archive> 
      <manifest> 
       <mainClass>foo.bar.Main</mainClass> 
      </manifest> 
     </archive> 
    </configuration> 
</plugin> 

如果您檢查,清單類配置/指令是<archive>標籤下。

我的問題是爲什麼它在<archive>標記下?我不明白標籤的命名約定/相關性。我們在這裏沒有存檔任何東西。

回答

0

<archive>在創建某種形狀的工件方面,在你的情況下是一個jar文件。 JAR - Java ARchive。 Maven Archiver主要由插件來處理包裝。你正在操縱那個打包過程,將數據添加到清單文件中,該清單文件將存放在jar文件中。

0

快速回答,因爲maven-assembly-plugin的開發人員需要這種方式。 附帶一些解釋: maven-assembly-plugin旨在從您的maven項目中創建單個可分發的歸檔。所以輸出被稱爲存檔。 「jar-with-dependencies」是這個插件的特殊描述符,用於構建包含所有依賴關係的可運行jar(Java Archive)文件。對於插件,這仍然是一個檔案。因此,當您想要將帶mainClass的清單添加到歸檔中時,您可以在歸檔變量中執行此操作。