【问题标题】:Maven: Distribute source code with with jar-with-dependenciesMaven:使用 jar-with-dependencies 分发源代码
【发布时间】:2014-07-23 19:29:31
【问题描述】:

我正在使用 Maven 程序集插件将我的 Java 项目的二进制文件打包到一个胖 jar 中(使用 jar-with-dependencies 描述符)。这很好用。

问题:如何将项目的源文件与已编译的类文件一起包含在内?我试图查看 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>

【问题讨论】:

    标签: java maven maven-assembly-plugin


    【解决方案1】:

    最简单的解决方案是使用预定义描述符src,或者使用预定义描述符project 可能会更好:

      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
        <descriptorRef>src</descriptorRef>
      </descriptorRefs>
    

    或者其他选项是这样的:

      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
        <descriptorRef>project</descriptorRef>
      </descriptorRefs>
    

    【讨论】:

    • 谢谢!这不是我的想法,因为我计划将源打包到同一个 jar 中,但这可能完全足够或更好。
    • 这取决于一点点。我建议仅在发布的情况下执行此操作,并在您公司 pom.xml 的发布配置中将 maven-source-plugin 用于此类目的。这可以通过每个 SNAPSHOT 部署来增强以创建源包。轮到你选择你喜欢走的路了。
    【解决方案2】:

    选择将二进制文件和源代码作为胖 jar 分发是一项特定要求吗?通常,二进制文件和源文件一起分发,但作为单独的 jar 文件。 Maven Central 上的许多项目都在使用这种方法,Nexus 和 Artifactory 等存储库也支持这种方法。如果您选择此选项,maven-source-plugin 就是您的朋友。来自documentation

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

    然后执行mvn source:jar。请参阅configuration options 的网页。

    【讨论】:

    • 感谢您的提示!不过,使用 hkmarbaise 指出的程序集插件的 src 描述符似乎有点简单,因为它不需要额外的插件。
    猜你喜欢
    • 2012-01-31
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 2010-11-23
    • 2013-05-21
    • 2020-10-12
    相关资源
    最近更新 更多