我正在创建自己的maven环境插件,该插件为配置中定义的每个环境创建并绑定资源,用于预定义的文件夹结构。插件将文件夹结构和资源输出到zip文件中,并将其放置到目标文件夹中。
问题
maven-assembly-plugin一样工作,以便当我使用'mvn‘时,我对目标文件夹的输出也会在我的本地存储库中结束?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>发布于 2016-08-17 08:29:01
您需要将新工件(生成的zip文件)附加到构建中(在本例中是正确的术语),作为其官方构件的一部分。
这基本上就是attach-artifact的build-helper-maven-plugin目标所做的:
附加要安装和部署的附加工件。
在其官方例子中,附加目标:
通常在
antrun:run或另一个插件之后运行,该插件生成要附加到项目以供安装和部署的文件。
本例中的另一个插件可以是您开发的插件。因此,您的情况有两种解决方案:
pom.xml配置,或第二种情况可以使用MavenProjectHelper及其attachArtifact方法通过Maven API进行讨论。
在您的mojo中,您可以通过以下方法作为一个组件导入:
/**
* Maven ProjectHelper
*/
@Component
private MavenProjectHelper projectHelper;然后使用上述方法:
projectHelper.attachArtifact(project, "zip", outputFile);您可能已经有了所需的Maven依赖项,但以防万一是这一个
<dependency>
<groupId>org.apache.maven</groupId>
<artifactId>maven-core</artifactId>
<version>3.3.9</version>
</dependency>请注意,工件将通过分类器作为附加工件附加到构建中,即默认工件名称的后缀将其与默认工件区别开来,并使其作为生成的输出具有唯一性。
作为对实际示例的引用,为了进一步回答您的(最后一个)问题,请检查GitHub maven-plugins存储库上的attachArtifact查询,检查attachArtifact字符串,您将看到它在许多Maven插件中使用,其中包括maven-assembly-plugin,例如AbstractAssemblyMojo类中的这里。
https://stackoverflow.com/questions/38891365
复制相似问题