微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Maven 迭代器,但专注于一项

如何解决Maven 迭代器,但专注于一项

因此,我遇到了一个独特的问题,它基于一个超出我控制范围的比实际需要更复杂的环境。

我的任务是创建一个 Maven 应用程序,其唯一目的是获取在资源目录下找到的文件并将它们编译成一个 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>

让我们假设我指定的项目比这里的两个项目多,而且这些项目的属性也比我定义的要多。当前的程序集插件产生的正是我所需要的;每个项目的资源汇编,具有适当的过滤文件属性,非常漂亮。

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

  • 我正在处理其相关环境的列表项,并且 然后将这些编译的项目部署到适当的环境中。
  • 然后我被要求为 DEV 重新生成一个编译的工件,因为有人 删除文件,因为;为什么不呢。
  • 我现在需要将我的工作区更改为我的最新标记并运行 根据时间限制和优先级处理一项。运行所有会 需要很长时间,而且我要满足 SLA。

我知道如果我使用配置文件,我的 pom 会有所不同,我可以简单地 mvn clean package -PDEV 继续我的一天。不幸的是,这不是我的构建过程,我想看看是否需要创建一个完全不同的过程,以防我的请求不可行。

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。