多的src / main /资源文件夹没有配置文件(我想要同时建立多个版本)(multiple sr

2019-09-27 13:16发布

我正在试图让我的项目自动生成两个不同版本的一个项目。 我所做的是我已经添加了两个不同的插件执行如下

         <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>exploded</goal>
                    </goals>
                </execution>                
            </executions>
            <configuration>
                <resources>
                    <resource>
                    <directory>src/main/resources/first</directory>
                    </resource>
               </resources>
                <webappDirectory>${webappDirectory}</webappDirectory>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.1.1</version>
            <executions>
                <execution>
                    <phase>compile</phase>
                    <goals>
                        <goal>war</goal>
                    </goals>
                </execution>                
            </executions>
            <configuration>
                <resources>
                    <resource>
                        <directory>src/main/resources/second</directory>
                    </resource>
               </resources>
                <webappDirectory>${project.build.directory}/deployment</webappDirectory>
            </configuration>
        </plugin>

它建立既webappDirectories和它创造的战争文件预期,但资源没有得到正确的包括(但似乎忽略上面的资源定义)。

我猜测它的,因为我在错误的阶段这样做,在什么阶段,我需要覆盖默认的资源目录?

(请注意,我不希望有两个不同的配置文件,我想有两个做一次)

Answer 1:

我已经写了一个确切博客条目有关问题,但本质是即将有Maven项目(在你的情况下,战争模块)结构如下:

.
|-- pom.xml
`-- src
    |-- main
    |   |-- java
    |   |-- resources
    |   |-- environment
    |   |   |-- test
    |   |   |   `-- database.properties
    |   |   |-- qa
    |   |   |   `-- database.properties
    |   |   `-- production
    |   |       `-- database.properties
    |   `-- webapp

最重要的是通过创建不同的配置Maven的组装插件具有这样的配置:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <executions>
      <execution>
        <id>test</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <descriptors>
            <descriptor>${project.basedir}/src/main/assembly/test.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
      <execution>
        <id>qa</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <descriptors>
            <descriptor>${project.basedir}/src/main/assembly/qa.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
      <execution>
        <id>production</id>
        <phase>package</phase>
        <goals>
          <goal>single</goal>
        </goals>
        <configuration>
          <descriptors>
            <descriptor>${project.basedir}/src/main/assembly/production.xml</descriptor>
          </descriptors>
        </configuration>
      </execution>
    </executions>
  </plugin>

你还需要的是组装的描述如下所示:

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

  <id>test</id>
  <formats>
    <format>war</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <unpack>true</unpack>
      <useProjectArtifact>true</useProjectArtifact>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <outputDirectory>WEB-INF</outputDirectory>
      <directory>${basedir}/src/main/environment/test/</directory>
      <includes>
        <include>**</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>

当然,你必须相应地他们的名字,显然你必须改变描述符中的目录中。 在此基础上,现在可以包周期中创建多个工件(在你的情况WAR文件)与不同的配置。 所以,你只需通过拨打你的项目构建:

  mvn clean package

最后,我建议不要使用src /主/资源文件夹,造成该文件夹应该用于生产信息不为不同的配置变化。 此外在src /测试/资源将用于测试的资源。



文章来源: multiple src/main/resources folders without profiles (I wish to build multiple versions at once)