首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使目标文件夹中的zip文件(由自制的maven插件生成)在本地存储库中结束?

如何使目标文件夹中的zip文件(由自制的maven插件生成)在本地存储库中结束?
EN

Stack Overflow用户
提问于 2016-08-11 08:40:04
回答 1查看 591关注 0票数 2

我正在创建自己的maven环境插件,该插件为配置中定义的每个环境创建并绑定资源,用于预定义的文件夹结构。插件将文件夹结构和资源输出到zip文件中,并将其放置到目标文件夹中。

问题

  • 如何使插件像maven-assembly-plugin一样工作,以便当我使用'mvn‘时,我对目标文件夹的输出也会在我的本地存储库中结束?
  • 我需要标记它还是什么的?当使用maven-assembly-plugin时,它会自动地这样做。
  • maven-assembly-plugin是如何确保这一点的?

我在插件开发中使用了mojo。

代码语言:javascript
复制
<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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-17 08:29:01

您需要将新工件(生成的zip文件)附加到构建中(在本例中是正确的术语),作为其官方构件的一部分。

这基本上就是attach-artifactbuild-helper-maven-plugin目标所做的:

附加要安装和部署的附加工件。

其官方例子中,附加目标:

通常在antrun:run或另一个插件之后运行,该插件生成要附加到项目以供安装和部署的文件。

本例中的另一个插件可以是您开发的插件。因此,您的情况有两种解决方案:

  • 将此插件配置为附加生成的工件作为进一步的pom.xml配置,或
  • 将自动附加生成文件的功能添加到插件中。

第二种情况可以使用MavenProjectHelper及其attachArtifact方法通过Maven API进行讨论。

在您的mojo中,您可以通过以下方法作为一个组件导入:

代码语言:javascript
复制
/**
 * Maven ProjectHelper
 */
@Component
private MavenProjectHelper projectHelper;

然后使用上述方法:

代码语言:javascript
复制
projectHelper.attachArtifact(project, "zip", outputFile);

您可能已经有了所需的Maven依赖项,但以防万一是这一个

代码语言:javascript
复制
<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类中的这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38891365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档