我可以在Maven中部署配置文件和生成的jar

时间:2016-05-26 13:47:37

标签: java maven teamcity artifactory dropwizard

我有一个DropWizard Java项目,当我运行mvn package时,它会构建一个Shaded Jar。我通过TeamCity构建了这个项目,并将生成的Jar + Pom部署到了Artifactory。

要运行此项目,我需要一个配置Yaml文件。此文件目前尚未部署到工件中。

问题:有没有办法在POM中添加一个步骤,通过配置文件以及jar和pom,以便teamcity可以将它部署到Artifactory上?

目前,我看到实现此目的的唯一方法是在Teamcity“include”部分添加配置文件的路径。但是,这会覆盖默认包括:来自mvn包的结果文件。

我尝试了maven资源插件,但这只是将配置文件添加到生成的着色jar中。

1 个答案:

答案 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;额外附加的工件