我可以在 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
> 附加神器
我有一个 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
> 附加神器