несколько папок src / main / resources без профилей (я хочу создать несколько версий одновременно) - PullRequest
1 голос
/ 14 марта 2012

Я работаю над тем, чтобы мой проект автоматически собрал две разные версии проекта.Что я сделал, так это то, что я добавил два разных исполнения плагина следующим образом:

         <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 и создает файл войны, как и ожидалось, но ресурсы не включаются правильно (кажется,игнорировать определения ресурсов, приведенные выше).

Я предполагаю, что это потому, что я делаю это в неправильной фазе, на каком этапе мне нужно переопределить каталог ресурсов по умолчанию?

(обратите внимание,Я не хочу иметь два разных профиля, я хочу сделать оба сразу)

1 Ответ

4 голосов
/ 14 марта 2012

Я написал запись в блоге ровно об этой проблеме, но суть в том, чтобы у проекта maven (в вашем случае военный модуль) была следующая структура:

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

Самое важное - создать другую конфигурацию с помощью maven-assembly-plugin с такой конфигурацией:

  <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 / main / resources, потому что эта папка должна использоваться для производственной информации, которая не изменяется для другой конфигурации.Кроме того, src / test / resources будет использоваться для ресурсов тестирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...