0

MavenマルチモジュールJavaEE6アプリがあるとします。

foobar/
    foobar-ear/
        src/
            main/
                application/
                    META-INF/
                        MANIFEST.MF
                        glassfish-application.xml
                        glassfish-resources.xml
                filters/
                    dev.properties
                    prod.properties
                    test.properties
        pom.xml
    foobar-web/
    foobar-ejb/
    pom.xml

ご覧のとおり、私はリソースフィルタリングを使用しています。foob​​ar-earのpomは、ビルドプロファイルを定義します。

<profiles>
    <profile>
        <id>dev</id>
        <properties>
            <env>dev</env>
        </properties>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
    </profile>
    <profile>
        <id>test</id>
        <properties>
            <env>test</env>
        </properties>
    </profile>
    <profile>
        <id>demo</id>
        <properties>
            <env>demo</env>
        </properties>
    </profile>
    <profile>
        <id>prod</id>
        <properties>
            <env>prod</env>
        </properties>
    </profile>
</profiles>

また、各子プロジェクトのpomはリソースフィルタリングを定義します。foob​​ar-ear / pom.xmlの場合:

<build>
    ...

    <filters>
        <filter>src/main/filters/${env}.properties</filter>
    </filters>
    <resources>
        <resource>
            <directory>src/main/application</directory>
            <filtering>true</filtering>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
        <resource>
            <directory>src/main/application</directory>
            <filtering>false</filtering>
            <excludes>
                <exclude>**/*.xml</exclude>
            </excludes>
        </resource>
    </resources>

    ...
</build>

ここでの目的は、フィルタープロパティファイルで定義されているJDBCおよびJavaMail構成アイテムのプレースホルダーを含むfoobar-ear / src / main / application / META-INF/glassfish-resources.xmlをフィルター処理することです。

を使用してビルドするmvn -Pdev clean installと、foobar-earで次の出力が得られます。

foobar-ear/
    target/
        classes/
            META-INF/
                MANIFEST.MF
                glassfish-application.xml
                glassfish-resources.xml    <- This one is filtered
        foobar-ear/
            META-INF/
                MANIFEST.MF
                glassfish-application.xml
                glassfish-resources.xml    <- This one is NOT filtered
            lib/
            foobar-ejb.jar
            foobar-web.war
        application.xml
        foobar-ear.ear                     <- ear file. Contents same as foobar-ear/

ご覧のとおり、通常の出力場所にコピーされたリソースはフィルタリングされますが、EARディレクトリレイアウトとearファイルのリソースはフィルタリングされません。

4

1 に答える 1

0

構成に追加<filtering>true</filtering>しましたが、maven-ear-plugin動作します。

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-ear-plugin</artifactId>
            <version>2.7</version>
            <configuration>
                <filtering>true</filtering>
                [...]
            </configuration>
        </plugin>
        [...]
    </plugins>
    [...]
</build>

参照:ソースのフィルタリング

于 2012-06-02T05:28:40.463 に答える