我是maven的新手,有一个有一些依赖关系的项目。现在,Maven应该创建一个包含所有/src/main/java
文件的jar文件,并将它们放入A
目录中。我想在构建过程中实现以下目标:
- 将所有依赖关系jar放入文件夹
B
- 将项目中的一些其他文件放入
C
中 - 然后我需要gzipped和zipped
- 设置一些在gzip中设置的执行权限
- 最后将这两个归档文件推送到某个网络驱动器上
我已经使用了ANT,但我想为Maven做一个干净的端口,而不是调用大的ANT文件。
有人能给我指正确的方向吗?我应该使用哪些插件?
首先,看看Maven Assembly插件。它可能会满足你的所有需求。我用过它,但只是一点点,这样我就可以为您指出您可能需要的信息。
您可以为这个名为AssemblyDescriptor的插件创建XML配置文件,该文件指导其操作。
插件的页面上有一些预定义的可用内容。http://maven.apache.org/plugins/maven-assembly-plugin/descriptor-refs.html至少在zip中有来源的那个会对你有所帮助。
程序集说明已打开http://maven.apache.org/plugins/maven-assembly-plugin/assembly.html.
- 您可以在dependencySet中复制依赖项
- 在fileSet中,您可以定义文件权限
- 对于GZipping,您可以查看以下主题使用Maven创建tar.gz档案
- 如果Assembly插件无法处理共享驱动器上的复制,请查看maven复制插件
如果Maven Assembly插件无法处理您需要的所有东西,您可以使用:-Maven复制插件-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/-如果您需要复制资源。
我不确定我是否知道您的所有要求。
Maven可以自己或使用插件完成以下操作:
0/"mvn-compile"将编译源文件夹下的java文件,src/main/java是默认文件夹,并将它们复制到target/classes 中
1/"mvn包"将根据您的包装压缩一个罐子或战争
2/maven资源插件可以做文件操作
3/maven汇编插件可以存档资源
4/"mvn-install"将打包的jar安装到本地maven存储库中
5/如果您拥有权限,"mvn-deploy"将把打包的jar部署到远程maven存储库中
当使用Maven时,将文件复制到其他项目不是一个明智的想法。在Project C pom.xml中添加maven依赖项更具maven风格。
除了Maven Assembly插件(以及其他一些方法),还可以签出Maven Shade插件。
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>