2

Maven でビルドする Grails プロジェクトがあります。このプロジェクトにはリソース ファイルがsmth.propertiesあり、最後の行は次のようになります。

build.number=${build.number}

maven-resources-plugin実行時にフィルタリングして塗りつぶすために使用しようとしましたmvn -Dbuild.number=1.0 installが、プラグインが機能しないため機能しないようですgrails-maven-plugin。同じコードですが、Grails を使用しない場合は完全に機能します。

${name}Grails でリソースをフィルタリングして、すべてのフィールドを-Dname=valueon で埋めるにはどうすればよいmvn installですか?

4

2 に答える 2

1

を構成する代わりに、タグmaven-resources-plugin内にリソース フィルタリングを直接追加できます。<build/>

<project>
    ...
    <properties>
        <name>my default value</name>
    </properties>
    ...
    <build>
        ...
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        ...
    </build>
    ...
</project>

次に、コマンド ラインを使用して実行します。

mvn -Dname=myNewValue install
于 2012-10-02T12:17:50.233 に答える
0

Maven リソースの処理は、基本的に、あるディレクトリから別のディレクトリへのリソースのコピーであり、プレースホルダーを置き換えます。

これは、プロセス リソースのライフサイクル フェーズにバインドされています。

リソースを別のプラグインで再処理したい場合、簡単な方法は、1) 最初のプラグイン、フォルダー A からリソースを取得し、フォルダー B にコピーする (いくつかの処理を行う) 2) 2 番目のプラグイン、フォルダー B からリソースを取得し、コピーするように構成することです。フォルダCへ

また、2 つの異なるフェーズにバインドして、正しい実行順序を確保します。

resources:resources は、メイン ソース コードのリソースをメイン出力ディレクトリにコピーします。

この目標は、プロセス リソースのライフサイクル フェーズにデフォルトでバインドされているため、通常は自動的に実行されます。常に project.build.resources 要素を使用してリソースを指定し、デフォルトでは project.build.outputDirectory を使用してコピー先を指定します。

于 2012-10-02T11:40:01.730 に答える