2

この例のように maven-remote-resources-plugin を使用して、複数の Maven モジュール間で共通のリソースを選択的に共有しようとしていますが、リソースの選択的なインポートを機能させるのが非常に困難です。

<includes>以下のように and要素を使用しようとして<excludes>います。プラグインの doco でこれらが言及されているのを見たことがありませんが、Eclipse はコマンド補完で有効なオプションとしてそれらを提供し、pom を実行してもエラーは発生しません。これまでのところ、インポートされたリソースを取得したり、まったく影響を与え<includes>たりすることはできませんでした<excludes>

私のpomの関連セクションは次のとおりです。

共有リソース

<build>
  <plugins>
    <plugin>
       <artifactId>maven-remote-resources-plugin</artifactId>
       <executions>
         <execution>
           <goals>
             <goal>bundle</goal>
           </goals>
         </execution>
       </executions>
       <configuration>
         <includes>
           <include>**/*</include>
         </includes>
       </configuration>
     </plugin>
  </plugins>
</build>

<dependencies>
  <dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-remote-resources-plugin</artifactId>
    <version>1.3</version>
  </dependency>
</dependencies>

リソース コンシューマ

<build>
 ...
  <plugins>
    <plugin>
       <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-remote-resources-plugin</artifactId>
       <version>1.3</version>
       <configuration>
         <resourceBunldes>
           <resourceBundle>myApp:myApp_sharedresources:${project.version}</resourceBundle>
         </resourceBundles>
         <outputDirectory>${project.build.outputDirectory}</outputDirectory>
         <includes>
           <include>theOnlyResourceIWant.properties</include>
         </includes>
       </configuration>
       <executions>
         <execution>
           <goals>
             <goal>process</goal>
           </goals>
           <phase>generate-resources</phase>
         </execution>
       </executions>
     </plugin>
  </plugins>
</build>

<dependencies>
  <dependency>
    <groupId>myApp</groupId>
    <artifactId>myApp_sharedresources</artifactId>
    <version>1.0</version>
  </dependency>
</dependencies>

<includes>と の多くの組み合わせを試しまし<excludes>たが、これまでのところすべて効果がありませんでした。

だから、

<includes></includes>

<excludes></excludes>

maven-remote-resources-plugin 構成の有効な要素とその使用方法 リソースを別々のMavenモジュールに合理的に分離できますが、それにより多数の単一ファイルMavenモジュールが作成され、余分なxmlが大量に追加される可能性があるため、可能であれば避けたいと思います。

プラグインのソース コードに目を通したくないのですが、それは次のステップです。

4

2 に答える 2

3

インポートする共有リソースに一時ディレクトリを使用し、それをフィルタリングします。

以下のリモート リソース プラグインの構成。これにより、すべての共有リソースがプロジェクトの一時ディレクトリにコピーされます。false に設定attachedすると、それらは最終的なプロジェクト アーティファクトに含まれないことを意味します。これにより、Maven の通常のリソース処理を使用して、含めるものを選択する機会が与えられます。

<plugin>
<artifactId>maven-remote-resources-plugin</artifactId>
<configuration>
  <resourceBundles>
    <resourceBundle>myApp:myApp_sharedresources:${project.version}</resourceBundle>
  </resourceBundles>
  <attached>false</attached>
  <outputDirectory>${project.build.directory}/shared-resources</outputDirectory>
</configuration>
<executions>
   <execution>
     <goals>
       <goal>process</goal>
     </goals>
     <phase>generate-resources</phase>
   </execution>
 </executions>
</plugin>

リソース定義。がmaven-resource-plugin実行されると (デフォルトでは jars/wars/ears のライフサイクルにバインドされています)、共有リソース ディレクトリと通常のディレクトリが使用されますsrc/main/resources。両方を定義する必要があります。(必要に応じて、リソース フィルタリングを有効にすることもできます。)

<resources>
  <resource>
     <directory>${project.build.directory}/shared-resources</directory>
     <includes>
       <include>theOnlyResourceIWant.properties</include>
     </includes>
  </resource>
  <resource>
     <directory>${basedir}/src/main/resources</directory>
  </resource>
</resources>

共有ディレクトリを のサブディレクトリにすることをお勧めします。${project.build.directory}これにより、cleanライフサイクルが変更されずに機能します。

于 2012-09-28T13:40:48.000 に答える
0

'#{expr}'(Rubyスタイル)形式のフィルター区切り文字を有効にするには、プラグイン構成に以下を追加します。

<plugin>
    <artifactId>maven-remote-resources-plugin</artifactId>
    <version>1.3</version>
    <executions>
      <execution>
        <id>process-remote-resources</id>
        <goals>
          <goal>process</goal>
        </goals>
        <configuration>
          <filterDelimiters>
            <filterDelimiter>#{*}</filterDelimiter>
          </filterDelimiters>
          [...]
        </configuration>
      </execution>
    </executions>
  </plugin>

このリンクを参照してください

于 2012-09-28T07:57:27.510 に答える