2016-12-16 13 views
1

アセンブリファイルに依存関係として含まれるWARファイルがあります。 WARファイルには、いくつかのプロパティが含まれています。これは、新しく生成されたWARファイルで除外したいものです。アセンブリを使用した* .warファイル内のプロパティファイルの除外

不明な理由により除外が機能しません。 **/*.propertiesを使用してすべてのプロパティファイルを除外しても、そのファイルは除外されません。何がここに間違っているアイデア?

Mavenのポンポン

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>de.mycompanyname.myprojectname</groupId> 
<version>1.0-SNAPSHOT</version> 

<artifactId>demo-dashboard-assembly</artifactId> 
<packaging>pom</packaging> 
<name>demo-dashboard-assembly</name> 

<build> 
    <plugins> 
     <plugin> 
      <artifactId>maven-assembly-plugin</artifactId> 
      <version>2.5.3</version> 
      <goals></goals> 
      <executions> 
       <execution> 
        <id>delivery-prod</id> 
        <phase>prepare-package</phase> 
        <goals><goal>single</goal></goals> 
        <configuration> 
         <appendAssemblyId>false</appendAssemblyId> 
         <finalName>demo#prod#dashboard</finalName> 
         <descriptors> 
          <descriptor>src/main/assembly/delivery.prod.xml</descriptor> 
         </descriptors> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

<dependencies> 
    <dependency> 
     <groupId>de.mycompanyname</groupId> 
     <artifactId>myprojectname.dashboard</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <type>war</type> 
    </dependency> 
</dependencies> 

</project> 

delivery.prod.xml

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.3 http://maven.apache.org/xsd/assembly-1.1.3.xsd"> 
<id>delivery</id> 
<formats> 
    <format>dir</format> 
</formats> 
<includeBaseDirectory>false</includeBaseDirectory> 

<dependencySets> 
    <dependencySet> 
     <outputDirectory>/</outputDirectory> 
     <unpack>true</unpack> 
     <excludes> 
      <exclude>WEB-INF/classes/commonDashboard.dev.properties</exclude> 
      <exclude>WEB-INF/classes/commonDashboard.test.properties</exclude> 
      <exclude>WEB-INF/classes/db.dev.properties</exclude> 
      <exclude>WEB-INF/classes/db.test.properties</exclude> 
     </excludes> 
    </dependencySet> 
</dependencySets> 
</assebly> 

答えて

1

問題はyou're not using the right <exclude> configurationです。 <dependencySet>レベルで<exclude>を指定することにより

<dependencySet> 
    <outputDirectory>/</outputDirectory> 
    <unpack>true</unpack> 
    <excludes> 
    <exclude>WEB-INF/classes/commonDashboard.dev.properties</exclude> 
    <!-- more excludes --> 
    </excludes> 
</dependencySet> 

あなたはこのセットで除外されるべき依存関係を指定しています。つまり、ここでルートフォルダに展開されるべきではない依存関係をここで指定しています。明らかに、WEB-INF/classes/...の依存関係は存在しないため、一致して何もしません。実際には、それはあなたがログに見ることができ、警告を発生させます:あなたの代わりに欲しい

[WARNING] The following patterns were never triggered in this artifact exclusion filter: 
o 'WEB-INF/classes/commonDashboard.dev.properties' 
o 'WEB-INF/classes/commonDashboard.test.properties' 
o 'WEB-INF/classes/db.dev.properties' 
o 'WEB-INF/classes/db.test.properties' 

は、アンパックされ、依存関係内のファイルを除外することです。そのためには、除外設定を含む<unpackOptions>要素を使用する必要があります。

アーカイブから抽出した項目を含める/除外/フィルタするオプションを指定します。このように

(2.2ベータ-1以来)、あなたの代わりにしておく必要があります

<dependencySets> 
    <dependencySet> 
    <outputDirectory>/</outputDirectory> 
    <unpack>true</unpack> 
    <unpackOptions> 
     <excludes> 
     <exclude>WEB-INF/classes/commonDashboard.dev.properties</exclude> 
     <exclude>WEB-INF/classes/commonDashboard.test.properties</exclude> 
     <exclude>WEB-INF/classes/db.dev.properties</exclude> 
     <exclude>WEB-INF/classes/db.test.properties</exclude> 
     </excludes> 
    </unpackOptions> 
    </dependencySet> 
</dependencySets> 

これは正しく、各依存関係の開梱時に選択したファイルを除外します、そして得られたアセンブリがありませんそれら。各ファイルを指定するのではなく、use a regular expressionとすることができます。例えば:

<exclude>%regex[WEB-INF\/classes\/(commonDashboard|db)\.(dev|test)\.properties]</exclude> 
+0

私はこのオプションを知らなかった。説明ありがとう! – KayJ

関連する問題