2014-09-11 98 views
1

我想創建帶有戰爭的jar文件,該文件應該包含與.class文件並行的源文件(.java文件)使用maven生成的jar。 (我知道有一些插件可用來生成一個單獨的xyy-sources.jar文件,但我不想創建一個獨立的源jar,我需要一個單獨的jar文件,同時存在.class和.java文件)如何在生成的jar文件中使用maven包含與.class文件並行的源文件(.java文件)

+1

你能解釋關於「戰爭」的部分嗎? – Thilo 2014-09-11 05:46:39

+1

爲什麼要包含.class文件的源代碼? **千萬不要這樣做**,否則會浪費真正的可執行文件中的空間而無法獲得收益。如果你想要一個包含源代碼和可執行jar的包,通常的方法是首先生成可執行jar,然後生成一個包含'bin'或'lib'目錄的源代碼jar文件。 – 2014-09-11 08:31:44

+0

我得到了解決方案。您只需在構建標籤下添加資源。例如。 src/main/java。現在你創建的每個jar和war文件都會包含.java文件。 :)無論如何,非常感謝您的回覆。 – mac 2014-09-12 14:12:55

回答

3

你只需要在構建標籤添加資源。例如, 。

<build> 
    <resources> 
     <resource> 
     <directory>src/main/java</directory> 
     </resource>  
    </resources> 
</build> 

現在你創建的每個jar和war文件都會包含.java文件。 :)

0

我不確定在.class旁邊包括.java是一個非常好的主意。你想要這麼做的具體原因是什麼?

如果您需要包括源代碼,你可以創建一個單獨的源JAR(是不是你要求它,但推薦的方式)通過執行MVN包

<plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-source-plugin</artifactId> 
     <executions> 
     <execution> 
      <id>attach-sources</id> 
      <goals> 
      <goal>jar</goal> 
      </goals> 
     </execution> 
     </executions> 
    </plugin> 

這是否幫助這個樣子? http://maven.apache.org/plugin-developers/cookbook/attach-source-javadoc-artifacts.html

+0

這將創建一個單獨的jar文件,其中包含「sources」分類器,而不是OP所需的。 – khmarbaise 2014-09-11 06:34:34

+0

@khmarbaise:Atul已經說過*並不是你要求的,但你能想象一個單一的理由將源代碼包含在* executable * jar和.class文件中嗎? – 2014-09-11 08:28:41

+0

@SergeBallesta我編輯了我的答案,並在khmarbaise的評論後添加了「(這不是你要求的,但是推薦的方式)」。非常感謝他的評論。無論如何,我也無法猜測在可執行jar中包含源代碼的原因。 – Atul 2014-09-11 09:32:33

0

我仍然不知道我理解你爲什麼會想這樣做,但你可以使用maven-resource-plugin及其具體copy-resource目標到您的構建目錄中的Java文件複製到任何位置。因此,例如,將其複製到然後把它包含在內置自動,你可以做以下的罐子classes文件夾:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
     <execution> 
      <id>copy-resources</id> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.outputDirectory}/src-files-location</outputDirectory> 
       <resources> 
        <resource> 
         <directory>src/main/java</directory> 
         <includes> 
          <include>**/*.java</include> 
         </includes> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
相關問題