【问题标题】:Maven packaging of jars and other filesjars和其他文件的maven打包
【发布时间】:2012-01-10 15:24:33
【问题描述】:

我是 maven 新手,并且有一个具有一些依赖项的项目。现在 Maven 应该创建一个包含所有 /src/main/java 文件的 jar 文件并将它们放入目录 A 中。我想在构建过程中实现这些东西:

  • 将所有依赖jar放入一个文件夹B
  • 将项目中的一些其他文件放入C
  • 那我需要 gzippedzipped
  • 设置一些gzip中设置的执行权限
  • 最后推送这两个档案到某个网络驱动器上。

我已经与 ANT 一起工作,但我想对 Maven 做一个干净的端口,而不是调用大的 ANT 文件。

有人能指出我正确的方向吗?我应该使用哪些插件?

【问题讨论】:

    标签: java maven ant m2eclipse packaging


    【解决方案1】:

    首先,看看 Maven 程序集插件。它可能会满足您的所有需求。我已经使用了它,但只是一点点,所以我可以向您指出您可能需要的信息。

    您为此插件创建名为 Assembly Descriptor 的 XML 配置文件,以指导其操作。

    插件页面上有一些预定义的可用。 http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html 至少有 zip 中的源代码会帮助你。

    程序集描述位于http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html

    • 您可以在dependencySets 中复制依赖项。
    • 在fileSet中,您可以定义文件权限。
    • 对于GZipping你可以看这个话题Creating a tar.gz archive with Maven
    • 如果 Assembly 插件无法处理共享驱动器上的复制,请查看 maven-copy-plugin。

    如果 Maven Assembly 插件无法处理您需要的所有内容,您可以使用: - Maven Copy Plugin - http://evgeny-goldin.com/wiki/Maven-copy-plugin 复制源文件 - Maven 依赖插件 -http://maven.apache.org/plugins/maven-dependency-plugin/ 用于复制所有依赖 JAR(插件的目标复制依赖) - Maven 资源插件http://maven.apache.org/plugins/maven-resources-plugin/ - 如果你需要复制资源。

    【讨论】:

      【解决方案2】:

      我不确定我是否了解您的所有要求。

      Maven 可以自行或通过插件执行以下操作:

      0/ "mvn compile" 将编译你的源文件夹下的java文件,src/main/java是默认文件夹,并将它们复制到target/classes中

      1/“mvn package”会根据你的包装压缩一个 jar 或 war

      2/ maven资源插件可以做文件操作

      3/ maven组装插件可以存档资源

      4/ "mvn install" 将打包好的 jar 安装到本地 maven 仓库中

      5/ "mvn deploy" 将打包好的 jar 部署到远程 maven 仓库中,如果你有权限

      在使用 Maven 时,将文件复制到其他项目中并不是一个明智的做法。在 Project C pom.xml 中添加 maven 依赖更加 maven 风格。

      【讨论】:

      • 这很好。与 Ant 不同,Maven 对项目和预定义的生命周期有一些假设。它无需太多配置即可处理许多开箱即用的操作。例如。对于编译,你不需要告诉它在哪里寻找源文件。它使用其项目结构,例如src/main/java 用于 java 源文件和 src/main/resources 用于应用程序资源。您可以通过阅读有关 Maven 生命周期的文章来了解 Maven 在做什么。 maven.apache.org/guides/introduction/…
      【解决方案3】:

      除了 Maven 组装插件(以及其他几种方法)之外,请查看 Maven Shade Plugin

      Maven 阴影插件

      这个插件提供了将工件打包成一个 uber-jar,包括它的依赖和遮蔽 - 即重命名 - 一些依赖的包。

      以下是一个示例 maven 插件配置,用于创建具有 jar 依赖项的项目的 jar 输出:

      <build>
              <plugins>
                  <plugin>
                      <groupid>org.apache.maven.plugins</groupid>
                      <artifactid>maven-shade-plugin</artifactid>
                      <version>1.4</version>
                      <executions>
                        <execution>
                          <phase>package</phase>
                          <goals>
                            <goal>shade</goal>
                          </goals>
                          <configuration>
                            <transformers>
                              <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainclass>Main Class of the jar file</mainclass>
                              </transformer>
                            </transformers>
                          </configuration>
                        </execution>
                      </executions>
                 </plugin>
              </plugins>
        </build>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-15
        • 2010-12-29
        • 2014-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多