我正在创建自己的maven-environment-plugin,它为配置中定义的每个环境的预定义文件夹结构创建和捆绑资源。该插件正在输出zip文件中的文件夹结构和资源,并将其放在目标文件夹中。
问题:
maven-assembly-plugin
一样工作,以便当我使用'mvn install'时,我的输出到目标文件夹也会在我的本地存储库中结束?maven-assembly-plugin
时,它会自动执行此操作。maven-assembly-plugin
如何设法确保这一点?我正在使用mojo进行插件开发。
<plugin>
<groupId>dk.kmd.devops.maven.plugin</groupId>
<artifactId>envconfiguration-maven-plugin</artifactId>
<version>1.0.3</version>
<configuration>
<environments>
<environment>${env.local}</environment>
<environment>${env.dev}</environment>
<environment>${env.t1}</environment>
<environment>${env.t2}</environment>
<environment>${env.p0}</environment>
</environments>
<sourceConfigDir>${basedir}/src/main/config</sourceConfigDir>
<zipEnvironments>true</zipEnvironments>
</configuration>
<executions>
<execution>
<phase>generate-resources</phase>
<goals>
<goal>generateEnv</goal>
</goals>
</execution>
</executions>
</plugin>
答案 0 :(得分:1)
您需要将新工件(生成的zip文件)作为官方工件的一部分附加到构建(生成的zip文件)。
这基本上是build-helper-maven-plugin
的{{3}}目标:
附加要安装和部署的其他工件。
来自attach-artifact
,附加目标:
通常在
antrun:run
或其他插件之后运行,这些插件会生成要附加到项目以进行安装和部署的文件。
在这种情况下,另一个插件可以是您开发的插件。因此,您的案例有两种解决方案:
pom.xml
配置或可以使用its official examples及其MavenProjectHelper
方法通过Maven API覆盖第二种情况。
在你的魔咒中,你可以通过以下方式导入作为组件:
/**
* Maven ProjectHelper
*/
@Component
private MavenProjectHelper projectHelper;
然后使用上述方法:
projectHelper.attachArtifact(project, "zip", outputFile);
您应该已经拥有了所需的Maven依赖项,但以防它是attachArtifact
:
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.3.9</version>
</dependency>
请注意,工件将通过this one附加到构建作为附加工件,即默认工件名称的后缀,将其与默认工件区分开来,并使其作为构建的输出唯一
作为对实例的参考并进一步回答你的(最后一个)问题,检查GitHub maven-plugins
存储库上的classifier查询,检查attachArtifact
字符串,你会看到它在许多Maven插件中使用,其中maven-assembly-plugin
,例如this类中的here。