我有两个项目是从一个maven多项目,项目A和项目B构建的。项目B最近生效,与项目A的区别很小,即它使用了几个不同的配置文件。我的想法是为projectB创建一个配置文件并添加其他配置文件/替换现有配置文件。我已经在stackoverflow上尝试了几种方法,包括copy-rename插件和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中的文件总是在目标文件夹中。仅在projectbresources中的其他文件将复制到目标。
答案 0 :(得分:0)
根据您的陈述&#34; 项目B最近才开始生效,与项目A的区别很小,即它使用了几个不同的配置文件。&#34;我会说你不需要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>
更多相关信息,您可以默认激活一个配置文件。这将有助于您的开发环境自动使用一个。如果您希望拥有该配置文件的默认活动配置文件,则可以将资源文件夹命名为 resources (默认maven名称),并为第二个配置文件保留不同的名称。
更新:
轻松“轻松”#39;并且只添加一些额外的文件,您可以使用配置文件projectA maven默认并定义onle项目B的配置文件。
项目根文件夹变为:
pom.xml
- src
-- main
--- resources
--- resources-profileB
并且pom.xml默认只包含一个不活动的配置文件:
<profiles>
<profile>
<id>projectB</id>
<activation>
<activeByDefault>false</activeByDefault>
</activation>
<build>
<resources>
<resource>
<directory>src/main/resources-profileB</directory>
</resource>
</resources>
</build>
</profile>
</profiles>
如何构建两个配置文件:
没有配置文件的构建相当于为projectA构建:
mvn clean install
projectB配置文件的Buid将忽略默认文件夹中的资源,并且仅使用在配置文件中定义的资源(src / main / resources-profileB)。
mvn clean install -P projectB