gpt4 book ai didi

java - 使用配置文件中的 Maven 复制并覆盖一些资源

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:57 25 4
gpt4 key购买 nike

我有两个项目,它们是从一个 Maven 多项目(项目 A 和项目 B)构建的。项目 B 最近上线,与项目 A 几乎没有什么不同,即它使用了几个不同的配置文件。我的想法是为projectB 创建一个配置文件并添加额外的配置文件/替换现有的配置文件。我在 stackoverflow 上尝试了几种方法,包括复制重命名插件和 mvn 依赖插件。部分问题似乎是两个项目都有一个具有相同配置名称的文件。

我当前/最后的方法是按以下方式使用 maven-resources-plugin :我创建了一个附加目录:src/main/projectbresources 和一个projectbprofile:

        <profile>
<id>projectb</id>
<activation><activeByDefault>false</activeByDefault></activation>
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
<executions>
<execution>
<id>copy-resources</id>
<!-- here the phase you need -->
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/classes</outputDirectory>
<resources>
<resource>
<directory>src/main/projectbresources</directory>
<filtering>true</filtering>
</resource>
</resources>
<overwrite>true</overwrite>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>

我在 src/main/resources 和 src/main/projectbresources 中有一个具有相同名称的文件,但是,无论我使用哪个配置文件构建,src/main/resources 中的文件始终位于目标文件夹中。仅将项目资源中的其他文件复制到目标。

最佳答案

根据您的陈述“项目 B 最近上线,与项目 A 几乎没有什么不同,即它使用了几个不同的配置文件。”我想说您不需要 2 个单独的项目。您只能拥有一个项目,并根据激活的配置文件选择不同的配置。通过这种方法,两种情况的配置文件可以具有相同的名称但不同的内容。

您的项目结构将如下所示(作为示例):

项目根文件夹:

pom.xml
- src
-- main
--- resources-profileA
--- resources-profileB

现在,pom.xml 包含 2 个配置文件:profileA 和 profileB。每个配置文件定义它自己的构建/资源。

<profiles>
<profile>
<id>projectA</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-profileA</directory>
</resource>
</resources>
</build>
</profile>
<profile>
<id>projectB</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-profileB</directory>
</resource>
</resources>
</build>
</profile>
</profiles>

更多的是,您可以默认激活一个配置文件。这将帮助您的开发环境自动使用它。如果您希望该配置文件有一个默认的 Activity 配置文件,您可以将资源文件夹命名为“resources”(默认 Maven 名称),并为第二个配置文件保留不同的名称。

更新:

要“简单”并仅添加一些附加文件,您可以使用 maven 默认值来配置项目 A 并为项目 B 定义一个配置文件。

项目根文件夹变为:

pom.xml
- src
-- main
--- resources
--- resources-profileB

并且 pom.xml 默认情况下仅包含一个处于非 Activity 状态的配置文件:

<profiles>
<profile>
<id>projectB</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-profileB</directory>
</resource>
</resources>
</build>
</profile>
</profiles>

如何构建两个配置文件:
为无配置文件构建相当于为项目 A 构建:

mvn clean install

projectB 配置文件的 Buid 将忽略默认文件夹中的资源,并且仅使用配置文件 (src/main/resources-profileB) 中定义的资源。

mvn clean install -P projectB

关于java - 使用配置文件中的 Maven 复制并覆盖一些资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50324509/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com