用maven部署汇编包
我们使用Hudson和maven-release-plugin来完成发布版本。 现在我有一个项目,其中包含一个汇编所有必需组件的程序集,然后将它们打包到具有所需目录结构的.tar.gz包中。
现在我试图让release-plugin在release:perform目标中将这个包部署到我们的Maven仓库,但只部署了标准的东西(sources,javadoc,POM)。
我已经将程序集目标绑定到maven包阶段,并且.tar.gz在发布期间得到构建,但未上传到存储库。 任何暗示我在这里做错了什么?
这是汇编插件配置:
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/distribution.xml</descriptor>
</descriptors>
<finalName>${pom.artifactId}-${pom.version}</finalName>
<appendAssemblyId>false</appendAssemblyId>
<tarLongFileMode>warn</tarLongFileMode>
</configuration>
<executions>
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
我运行构建发布的命令是
mvn release:prepare release:perform release:clean
同时,我发现了两种做我想做的方式。
maven-build-helper-plugin允许将其他条目添加到应该部署的工件列表中:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>attach-distribution</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>target/${pom.artifactId}-${pom.version}.tar.gz</file>
<type>tar.gz</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
另一个非常简单,maven-user邮件列表中的人指出了这一点。 简单地使用装配:单个目标而不是asssembly:装配。 通过这种方式,在部署阶段将生成的工件上传到存储库。
<execution>
<id>dist-assembly</id>
<phase>package</phase>
<goals>
<goal>single</goal> <!-- that's all :) -->
</goals>
</execution>
部署文件不是发行版插件的一部分,而是部署插件的一部分(发行版本本身不会部署任何东西,但您可以配置在发行版中调用的部署插件)。
通常,部署插件会将所有工件部署到远程存储库,但程序集不是工件; Maven无法以任何方式在其存储库中使用.tar.gz存档,所以首先部署它们是没有意义的。
如果您坚持要将无用的文件复制到存储库中,则必须使用deploy:deploy-file
(请参阅文档)手动部署文件,并在插件配置过程中执行以在发布步骤中调用该文件。 但我仍然反对这个建议。
你可能正在寻找的是一种自动上传程序集的方式。 我不知道有这样做的插件。
链接地址: http://www.djcxy.com/p/29607.html上一篇: Deploying assembly package with maven
下一篇: exploded in maven but prevent from assembling war again?