我有一个DropWizard Java项目,当我运行mvn package
时,它会构建一个Shaded Jar。我通过TeamCity构建了这个项目,并将生成的Jar + Pom部署到了Artifactory。
要运行此项目,我需要一个配置Yaml文件。此文件目前尚未部署到工件中。
问题:有没有办法在POM中添加一个步骤,通过配置文件以及jar和pom,以便teamcity可以将它部署到Artifactory上?
目前,我看到实现此目的的唯一方法是在Teamcity“include”部分添加配置文件的路径。但是,这会覆盖默认包括:来自mvn包的结果文件。
我尝试了maven资源插件,但这只是将配置文件添加到生成的着色jar中。
答案 0 :(得分:4)
您可以使用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 clean install
)时,您将创建以下工件:
sample-project-0.0.1-SNAPSHOT.jar
&gt;默认项目工件,基于项目packaging
sample-project-0.0.1-SNAPSHOT.pom
&gt; pom.xml
文件重命名为.pom
扩展名,首先用于依赖中介以检查库中的传递依赖项sample-project-0.0.1-SNAPSHOT.txt
&gt;额外附加的工件