我有一个DropWizard Java项目,该项目在运行mvn软件包时会构建一个Shaded Jar.我有一个通过TeamCity构建的项目,并将生成的Jar Pom部署到Artifactory.
要运行此项目,我需要一个配置Yaml文件.此文件目前尚未部署到工件.
问题:有没有办法在POM中添加一个步骤来遍历配置文件以及jar和pom,以便teamcity也可以将其部署到Artifactory?
目前,我看到的唯一实现此目的的方法是在Teamcity的“ include”部分中添加配置文件的路径.但是,这将覆盖默认的包括:mvn包中的结果文件.
我尝试了maven Resource插件,但这只是将配置文件添加到生成的阴影jar中.
解决方法:
您可以使用build-helper-maven-plugin
及其attach-artifact
目标.
例如,将file.txt文件作为maven项目的一部分,并位于其pom.xml文件的同一级别,则可以具有以下pom:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>com.sample</groupId>
<artifactId>sample-project</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.10</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${basedir}/file.txt</file>
<type>txt</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
请注意插件的配置:基本上,它是作为文件的其他工件附加的file.txt文件.
注意事项:按照默认工件(在本例中为jar),附加的附加工件也将遵循命名约定.在这种情况下,file.txt文件将重命名为sample-project-0.0.1-SNAPSHOT.txt(使其唯一).它的内容虽然不会改变.
因此,在安装(mvn全新安装)时,将创建以下构件:
> sample-project-0.0.1-SNAPSHOT.jar>默认项目工件,基于项目包装
> sample-project-0.0.1-SNAPSHOT.pom>以.pom扩展名重命名的pom.xml文件,首先由依赖项中介使用,以检查在传递库的情况下的传递性依赖项
> sample-project-0.0.1-SNAPSHOT.txt>附加的附加工件