Maven包装的罐子和其他文件

时间:2012-01-10 15:24:34

标签: java maven ant m2eclipse packaging

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

  • 将所有相关性广告素材放入 B
  • 文件夹中
  • 将项目中的其他一些文件放入 C
  • 然后我需要 gzipped 压缩
  • 在gzip中设置一些执行权限
  • 最后两个档案推送到某个网络驱动器上。

我已经使用ANT,但我想为Maven做一个干净的端口,而不是调用大的ANT文件。

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

3 个答案:

答案 0 :(得分:2)

首先,看看Maven Assembly Plugin。它可能满足您的所有需求。我已经使用了它,但只是一点点,所以我可以指出你可能需要的信息。

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

插件页面上有一些预定义的可用内容。 http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html至少带有拉链来源的人会帮助你。

装配说明在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 Dependency Plugin - http://maven.apache.org/plugins/maven-dependency-plugin/,用于复制所有依赖项JAR(插件的目标副本依赖项) - Maven Resources插件http://maven.apache.org/plugins/maven-resources-plugin/ - 如果您需要复制资源。

答案 1 :(得分:1)

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

Maven可以单独或使用插件执行以下操作:

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

1 /“mvn package”将根据您的包装拉上罐子或战争

2 / maven resources插件可以进行文件操作

3 / maven assembly插件可以存档资源

4 /“mvn install”将打包的jar安装到本地maven存储库

5 /“mvn deploy”如果您有权限

,则会将打包的jar部署到远程maven存储库中

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

答案 2 :(得分:1)

除了Maven Assembly Plugin(以及其他几种方法),结帐Maven Shade Plugin

  

Maven Shade插件

     

此插件提供了将工件打包的功能   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>