我是maven的新手,并且有一个带有一些依赖项的项目。现在,Maven应该创建一个包含所有 /src/main/java
文件的jar文件,并将它们放入 A
目录中。我想在构建过程中实现这些目标:
B
C
。我已经使用ANT,但我想为Maven做一个干净的端口,而不是调用大的ANT文件。
有人能指出我正确的方向吗?我应该使用哪些插件?
答案 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。
如果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>