3

${..}トークンを以下のパターンに置き換えることができますsrc/main/resources@{}また、トークンを特定のファイル src/main/webapp/WEB-INF/content/test.jspまたはディレクトリの下のパターンに置き換えたいと考えていますsrc/main/webapp/WEB-INF/content

追加してみ<delimiter>@{test.version}</delimiter>ましたが、特定のディレクトリを作成する方法がわかりませんsrc/main/webapp/WEB-INF/content

test.versionmvn clean install -Dtest.version=100 のように実行時に表示されます

<build>
    <resources>
    <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*</include>
            </includes>
        </resource> 

    </resources>
 </build>



<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.5</version>
    <inherited>true</inherited>
    <configuration>
        <encoding>UTF-8</encoding>
        <nonFilteredFileExtensions>
            <nonFilteredFileExtension>xls</nonFilteredFileExtension>
        </nonFilteredFileExtensions>
         <delimiters>
          <delimiter>${*}</delimiter>
          <delimiter>@{*}</delimiter>
        </delimiters>
    </configuration>
</plugin>
4

3 に答える 3

1

プレースホルダー@{*}は、置換プラグインでは機能しないようです。

とにかくプレースホールを値に置き換えたいので。代わりに JSP ファイルで使用できます#{test.version}。フィルタリングのために、異なるディレクトリを定義できます。以下のスニペットを参照してください。

以下の構造を想定しています。

pom.xml
src/main/resources/hello.txt
src/main/webapp/WEB-INF/content/test.jsp
src/main/webapp/WEB-INF/web.xml

pom.xml

<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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>sub.optimal.example</groupId>
    <artifactId>superapp</artifactId>
    <packaging>jar</packaging>
    <version>1.0-SNAPSHOT</version>
    <name>superapp</name>

    <properties>
        <test.version>world</test.version>
    </properties>
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
            <resource>
                <targetPath>../webapp/WEB-INF/content</targetPath>
                <filtering>true</filtering>
                <directory>src/main/webapp/WEB-INF/content</directory>
            </resource>
        </resources>
        <plugins>      
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <inherited>true</inherited>
                <configuration>
                    <encoding>UTF-8</encoding>
                    <delimiters>
                        <delimiter>${*}</delimiter>
                        <delimiter>#{*}</delimiter>
                        <!-- this delimiter is not recognized -->
                        <delimiter>@{*}</delimiter>
                    </delimiters>
                </configuration>
            </plugin>
            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.6</version>
                <configuration>
                    <webResources>
                        <resource>
                            <directory>target/webapp</directory>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

hello.txt

Hello $ ${test.version} txt
Hello # #{test.version} txt
Hello @ @{test.version} txt

test.jsp

Hello $ ${test.version} jsp
Hello # #{test.version} jsp
Hello @ @{test.version} jsp

WAR ファイルをビルドする

mvn clean package

出力

> jar tf superapp-1.0-SNAPSHOT.war
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/content/
WEB-INF/classes/hello.txt
WEB-INF/content/test.jsp
WEB-INF/web.xml
META-INF/maven/sub.optimal.example/superapp/pom.xml
META-INF/maven/sub.optimal.example/superapp/pom.properties

# copy the file into a temp directory and extract it
# jar xf superapp-1.0-SNAPSHOT.war

>cat WEB-INF/classes/hello.txt
Hello $ world txt
Hello # world txt
Hello @ @{test.version} txt

>cat WEB-INF/content/test.jsp
Hello $ world jsp
Hello # world jsp
Hello @ @{test.version} jsp

この例はアイデアのみを示しており、ファイルやファイルの場所などを除外するために微調整が必​​要になる場合があります。

于 2016-04-14T14:11:57.107 に答える
0

ファイルsrc/main/webapp/WEB-INF/content/test.jspは Web リソースです。下にあるため、 ではなくsrc/main/webappによって処理されます。maven-war-pluginmaven-resources-plugin

属性を使用して、このプラグインでWeb リソースをフィルタリングすることもできfilteringます。の下にあるすべての Web リソースをフィルタリングするには、次の構成を使用できますsrc/main/webapp/WEB-INF/content

<plugin>
  <artifactId>maven-war-plugin</artifactId>
  <version>2.6</version>
  <configuration>
    <webResources>
      <resource>
        <directory>src/main/webapp/WEB-INF/content</directory>
        <filtering>true</filtering>
      </resource>
    </webResources>
  </configuration>
</plugin>

のみをフィルタリングしたい場合はtest.jsp、このファイルのみを含めることでこれを制限することもできます。

<resource>
  <directory>src/main/webapp/WEB-INF/content</directory>
  <filtering>true</filtering>
  <includes>
    <include>test.jsp</include>
  </includes>
</resource>

ただし、現在、このプラグインでカスタム区切り文字を設定することはできません (問題MWAR-225および未解決) ため、デフォルトのものに固執する必要 ${...}あり@...@ます@{...}

于 2016-04-14T12:53:05.393 に答える