Maven迭代器,但只关注一项

Maven迭代器,但只关注一项,maven,maven-assembly-plugin,Maven,Maven Assembly Plugin,因此,我有一个独特的问题,它是基于一个超出我控制范围的复杂环境 我的任务是创建一个Maven应用程序,其唯一目的是将在resources目录下找到的文件编译成zip文件,同时将特定于环境的值过滤到复制的文件中。很简单。我复制了供应商的构建过程,因为他们有一个专有的系统,所以我只能获得很少的信息 现在,我想做的是在这个迭代中关注一个特定的项目,并且只构建那个项目。我的问题是,我现在没有使用配置文件,我正试图找到一种方法来使用我必须完成的操作 下面是我的pom.xml文件的一个简单模型 <pr

因此,我有一个独特的问题,它是基于一个超出我控制范围的复杂环境

我的任务是创建一个Maven应用程序,其唯一目的是将在resources目录下找到的文件编译成zip文件,同时将特定于环境的值过滤到复制的文件中。很简单。我复制了供应商的构建过程,因为他们有一个专有的系统,所以我只能获得很少的信息

现在,我想做的是在这个迭代中关注一个特定的项目,并且只构建那个项目。我的问题是,我现在没有使用配置文件,我正试图找到一种方法来使用我必须完成的操作

下面是我的pom.xml文件的一个简单模型

<project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.im.special</groupId>
    <artifactId>So-Special</artifactId>
    <version>0.1</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.soebes.maven.plugins</groupId>
            <artifactId>iterator-maven-plugin</artifactId>
            <version>0.5.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.3.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>com.soebes.maven.plugins</groupId>
                <artifactId>iterator-maven-plugin</artifactId>
                <version>0.5.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>iterator</goal>
                        </goals>
                        <configuration>
                            <itemsWithProperties>
                                <itemWithProperty>
                                    <name>DEV</name>
                                    <properties>
                                        <prop.one>Some</prop.one>
                                        <prop.two>Unique</prop.two>
                                        <prop.eh>Values</prop.eh>                                        
                                    </properties>
                                </itemWithProperty>
                                <itemWithProperty>
                                    <name>DEV2</name>
                                    <properties>
                                        <prop.one>More</prop.one>
                                        <prop.two>Unique</prop.two>
                                        <prop.eh>Values</prop.eh>                                        
                                    </properties>
                                </itemWithProperty>
                            </itemsWithProperties>
                            <pluginExecutors>
                                <pluginExecutor>
                                    <goal>single</goal>
                                    <plugin>
                                        <artifactId>maven-assembly-plugin</artifactId>
                                        <version>3.3.0</version>
                                    </plugin>
                                    <configuration>
                                        <descriptors>
                                            <descriptor>src/main/assembly/assembly.xml</descriptor>
                                        </descriptors>
                                    </configuration>
                                </pluginExecutor>
                            </pluginExecutors>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

</project>

4.0.0
com.im.special
如此特别
0.1
聚甲醛
UTF-8
1.8
1.8
com.soebes.maven.plugins
迭代器maven插件
0.5.1
org.apache.maven.plugins
maven汇编插件
3.3.0
com.soebes.maven.plugins
迭代器maven插件
0.5.1
包裹
迭代器
发展
一些
独特的
价值观
DEV2
更多
独特的
价值观
单一的
maven汇编插件
3.3.0
src/main/assembly/assembly.xml
让我们假设我指定的项比这里的两个多,并且这些项的属性也比我定义的多。当前的汇编插件产生的正是我所需要的;每个项目的一次资源编译,其属性带有适当的过滤文件,非常漂亮

现在,扳手。我将如何进行,或者甚至是否有可能以仅针对已定义列表中的一个项的方式运行此构建。我的示例场景如下:

  • 我正在处理它们的相关环境和 然后将这些编译的项部署到适当的环境中
  • 然后我被要求为DEV重新生成一个编译的工件,因为 删除该文件是因为;为什么不呢
  • 我现在需要将我的工作区更改为我的最新标记并运行 根据时间限制和优先级处理一个项目。全速前进 需要很长时间,我需要满足SLA
我知道如果我使用个人资料,我的pom会有所不同,我可以简单地
mvn clean package-PDEV
开始我的一天。不幸的是,这不是我的构建过程,我想看看如果我的请求不可行,我是否需要创建一个完全不同的过程


还有,;没有这么多的env.properties文件很好,因为我所有的维护都在pom.xml中,而不是跨多个文件。

首先,你能举一个完整的例子,详细说明你想要实现的目标吗。。。(最好在Github或类似网站上使用?)。。。你还可以看一看吗?也许我误解了这里的帖子……在我做一个完整的例子之前,我会先阅读一下multienv插件,但我想插件的维护者应该能够对该插件的功能做出响应?我觉得我的描述很好(当然可以更好),我的要求也很简单。我有一个项目清单。A、 我运行
mvn包
,得到输出A.zip、B.zip和C.zip的列表。我只是想知道我是否可以在mvn命令中添加其他内容,例如
mvn package itemsWithProperties:A
,用于一次性用例,只获取A.zip?目前它不支持这样的东西,因为它应该保持简单,不要太多配置选项等(Maintainer it’s me;-))好的,我感谢您的反馈。就我而言,迭代器似乎比multienv插件更灵活。现在,我将继续按原样使用迭代器插件并手动管理我的输出文件。@khmarbaise如果您不介意将最后一条评论作为答案,我很乐意这样标记,因为该插件不支持我的独特要求。