Как доставить файлы свойств в дополнение к артефактам? - PullRequest
7 голосов
/ 28 августа 2009

Я использую Maven2 для создания проекта WAR.Некоторые файлы свойств зависят от среды, предназначенной для выпуска.

Я хочу доставить, кроме WAR, файл с именем datasource.xml.Этот файл уже существует в каталоге моего проекта, но содержит свойства, которые будут отфильтрованы во время сборки (например, некоторые ${foo.bar}).

Другими словами, после выполнения команды mvn clean install Я хочу видеть в моем каталоге target/ два файла, my-webapp.war и datasource.xml.

Обратите внимание, что datasource.xml не должен быть включен в артефакт my-webapp.war!

Как я могу это сделать?

1 Ответ

10 голосов
/ 28 августа 2009

Вы можете прикрепить дополнительные артефакты, используя build-helper-maven-plugin . Приведенная ниже конфигурация добавит datasource.xml в качестве дополнительного артефакта на этапе package . Если этот артефакт определен за пределами src / main / resources и src / main / webapp, он не будет включен в войну.

Обновление: чтобы обеспечить фильтрацию ресурсов для каждого комментария, вы можете указать выполнение цели копирования-ресурсов resource-plugin , указав применяемую фильтрацию. Затем вы все равно можете прикрепить этот отфильтрованный артефакт, используя build-helper-maven-plugin, ссылаясь на соответствующий целевой каталог. Я обновил пример ниже, чтобы показать это использование.

<plugin>
  <artifactId>maven-resources-plugin</artifactId>
  <version>2.4</version>
  <executions>
    <execution>
      <id>copy-resources</id>
      <phase>validate</phase>
      <goals>
        <goal>copy-resources</goal>
      </goals>
      <configuration>
        <outputDirectory>${project.build.outputDirectory}/datasource</outputDirectory>
        <resources>          
          <resource>
            <directory>src/main/datasource</directory>
            <filtering>true</filtering>
          </resource>
        </resources>              
      </configuration>            
    </execution>
  </executions>
</plugin>
<plugin>
  <groupId>org.codehaus.mojo</groupId>
  <artifactId>build-helper-maven-plugin</artifactId>
  <version>1.3</version>
  <executions>
    <execution>
      <id>attach-artifacts</id>
      <phase>package</phase>
      <goals>
        <goal>attach-artifact</goal>
      </goals>
      <configuration>
        <artifacts>
          <artifact>
            <file>${project.build.outputDirectory}/datasource/datasource.xml</file>
            <type>xml </type>
            <classifier>datasource</classifier>
          </artifact>
        </artifacts>
      </configuration>
    </execution>
  </executions>
</plugin>

Он не появится в целевой папке, но будет развернут / установлен в хранилище вместе с войной.

На прикрепленный артефакт можно ссылаться, определяя зависимость с помощью классификатора «источник данных». Например:

<dependency>
  <groupId>my.group.id</groupId>
  <artifactId>my-artifact-id/artifactId>
  <version>1.0.0</version>
  <classifier>datasource</classifier>
  <type>xml</type>
</dependency>

Вы можете использовать цель копирования плагина зависимостей , чтобы получить артефакт и поместить его туда, где он требуется в процессе развертывания.

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