繁体   English   中英

如何使用maven在生成的jar中包含与.class文件并行的源文件(.java文件)

[英]How to include source file(.java file) parallel to .class file in the generated jar using maven

我想用战争创建我的罐子,其中包括与使用maven生成的jar中的.class文件并行的源文件(.java文件)。 (我知道有一些插件可以生成一个单独的xyy-sources.jar文件。但是我不想创建一个单独的源jar。我需要一个同时存在.class和.java文件的jar文件)

您只需在构建标记下添加资源。 例如。

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

现在你创建的每个jar和war文件也会包含.java文件。 :)

我不确定是否在.class附近包含.java是一个非常好的主意。 您想要这样做的具体原因是什么?

如果你需要包含源代码,你可以通过执行mvn包来创建一个单独的源jar(这不是你要求的,但是推荐的方式)

<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

我仍然不确定我理解你为什么要这样做,但你可以使用maven-resource-plugin ,特别是它的copy-resource目标,将你的java文件复制到build目录中的任何位置。 因此,例如,将它们复制到classes文件夹,然后将其包含在自动构建的jar中,您可以执行以下操作:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM