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

Can I deploy a configuration file along with the generated jar in Maven

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

为了运行这个项目,我需要一个配置yaml文件。此文件目前未部署到 artifactory。

问题:有没有办法在 POM 中添加一个步骤来完成配置文件以及 jar 和 pom,以便 teamcity 也可以将其部署到 Artifactory?

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

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

您可以使用 build-helper-maven-plugin and its 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 > 默认项目工件,基于项目 packaging
  • sample-project-0.0.1-SNAPSHOT.pom > pom.xml 文件重命名为 .pom 扩展名,依赖中介首先使用它来检查库的传递依赖性
  • sample-project-0.0.1-SNAPSHOT.txt > 附加神器