2014-09-11 94 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> 
相关问题