Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/320.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Maven:使用带有依赖项的jar分发源代码_Java_Maven_Maven Assembly Plugin - Fatal编程技术网

Java Maven:使用带有依赖项的jar分发源代码

Java Maven:使用带有依赖项的jar分发源代码,java,maven,maven-assembly-plugin,Java,Maven,Maven Assembly Plugin,我正在使用Maven汇编插件将Java项目的二进制文件打包到一个胖jar中(带有依赖项描述符的jar)。这很有效 问题:如何将项目的源文件与编译的类文件一起包含?我试图查看Maven文档以了解如何做到这一点,但什么也找不到 谢谢 我的pom.xml如下所示: <project> ... <build> <plugins> <plugin> <groupId>

我正在使用Maven汇编插件将Java项目的二进制文件打包到一个胖jar中(带有依赖项描述符的jar)。这很有效

问题:如何将项目的源文件与编译的类文件一起包含?我试图查看Maven文档以了解如何做到这一点,但什么也找不到

谢谢

我的pom.xml如下所示:

<project>
...
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <finalName>${pom.artifactId}-${pom.version}</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <outputDirectory>${project.basedir}/bin/</outputDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    <descriptorRef>project</descriptorRef>
  </descriptorRefs>

...
org.apache.maven.plugins
maven编译器插件
1.6
1.6
maven汇编插件
带有依赖项的jar
${pom.artifactId}-${pom.version}
假的
${project.basedir}/bin/

最简单的解决方案是使用预定义的描述符,或者最好使用预定义的描述符:


带有依赖项的jar
src
或者另一种选择是这样的:

<project>
...
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <finalName>${pom.artifactId}-${pom.version}</finalName>
                    <appendAssemblyId>false</appendAssemblyId>
                    <outputDirectory>${project.basedir}/bin/</outputDirectory>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>
  <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    <descriptorRef>project</descriptorRef>
  </descriptorRefs>

带有依赖项的jar
项目

选择将二进制文件和源代码作为fat jar分发是一种特殊要求吗?通常,二进制文件和源文件一起分发,但作为单独的jar文件。Maven Central上的许多项目都在使用这种方法,Nexus和Artifactory等存储库也支持这种方法。如果您选择此选项,则用户是您的朋友。从:


org.apache.maven.plugins

.

谢谢!这并不完全是我的想法,因为我计划将源代码打包到同一个jar中,但这可能完全足够或更好,这取决于一点。我建议仅在发布时这样做,并在您公司pom的发布配置中使用maven源插件。这可以通过增强来创建包含每个快照部署的源程序包。轮到你选择你喜欢的方式了。谢谢你的提示!不过,使用hkmarbaise指出的汇编插件的src描述符似乎更简单,因为它不需要额外的插件。