この非常に冗長な Maven 構成に問題があります。
私が取り組んでいるアプリケーションは、別のリソース バンドルを必要とする環境向けに構築されることがあります。リソースを展開用に準備する現在の方法は、リソースを 1 つの .zip ファイルに追加することです。次に、ビルド マスターは、圧縮されたリソースをサーバーにデプロイします。一部の環境では、一部のリソースの代替バージョンを使用する必要があります。プロジェクトのフォルダー構造は次のようになります。
ソース/メイン/リソース - リソース1 - リソース 2 - リソース 2 ENV1/ -resource1 (環境固有) ENV2/ -resource1 (環境固有) -resource3 (環境固有)
ほとんどの環境では、リソースの zip ファイルにファイルresource1
、resource2
、が含まれている必要がありますresource3
。の場合ENV1
、zip ファイルにはENV1/resource1
, resource2
,が含まれている必要がありますresource3
。の場合ENV3
、zip ファイルにはENV2/resource1
, resource2
,が必要ENV2/resource3
です。
私は現在、各環境のアセンブリ記述子でこれを行っており、POM ファイルで個別に実行しています。
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>zip-normal-resources</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptor>assembly-descriptor.xml</descriptor>
</configuration>
</execution>
<execution>
<id>zip-ENV1-resources</id>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
<configuration>
<descriptor>assembly-descriptor-ENV1.xml</descriptor>
</configuration>
</execution>
そして、各記述子は非常に似ています。「通常の」アセンブリ記述子:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd ">
<id>Resources</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/resources</directory>
<includes>
<include>*.properties</include>
<include>*.xml</include>
</includes>
<outputDirectory>/</outputDirectory>
<filtered>true</filtered>
</fileSet>
<fileSet>
<directory>${project.build.outputDirectory}/resources</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
環境固有の記述子:
<assembly
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 "
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
http://maven.apache.org/xsd/assembly-1.1.2.xsd ">
<id>Resources-ENV1</id>
<includeBaseDirectory>false</includeBaseDirectory>
<formats>
<format>zip</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/resources</directory>
<includes>
<include>*.properties</include>
<include>*.xml</include>
</includes>
<!-- exclude environment-specific files -->
<excludes>
<exclude>resource1</exclude>
</excludes>
<outputDirectory>/</outputDirectory>
<filtered>true</filtered>
</fileSet>
<fileSet>
<directory>src/main/resources/ENV1</directory>
<includes>
<include>*.properties</include>
<include>*.xml</include>
</includes>
<outputDirectory>/</outputDirectory>
<filtered>true</filtered>
</fileSet>
<fileSet>
<directory>${project.build.outputDirectory}/resources</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>**/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
このソリューションは機能しますが、非常に非効率的です。環境名を除いて、ほぼ同一の環境ごとに複数のアセンブリを使用するのは好きではありません。これを合理化する方法はありますか?