1

Swing Application Framework を使用する Maven プロジェクトがあり、重複を避けるために pom.xml からアプリケーションのグローバル リソースにプロジェクト情報を挿入したいと考えています。

基本アプリケーション (netbeans 経由で提供) は、ウィンドウ タイトルとボックス構成について Application.title、Application.version、Application.vendor、Application.description リソースなどを使用しますが、実行時にこれらの値をプログラムで設定する方法が見つかりません。私はMaven Mavenではないので、ビルド時にそれらを注入するスキルがありません。

望ましい結果を達成するための最善の方法について、誰かに推奨事項はありますか?

4

4 に答える 4

4

フィルタリングされたリソースを使用してみることができます。プロパティファイルを作成する場合はsrc/main/resources/com/myapp/app.properties、次のようになります。

version=${project.version}
name=${project.name}
id=${project.artifactId}

それらはあなたのpom.xml:でフィルタリングを有効にする必要があります

<build>
  <resources>
    <resource>src/main/resources</resource>
    <filtering>true</filtering>
  </resources>
</build>

これで、Mavenがプロジェクトをビルドするときに、プロパティファイルが展開され、クラスパスに配置されます。次に、getResourceAsStream( "/ com / myapp / app.properties")を呼び出すだけで、アプリに読み込むことができます。

Whist mavenは自動的にファイルを作成します/META-INF/maven/$groupId/$artifactId/pom.propertiesが、これには必要なすべての情報が含まれていない場合があります。

于 2009-11-04T21:45:32.077 に答える
1

これらを別のプロパティ ファイルに保持し、pom.xml とアプリケーションの両方から読み取ることができます。

別のオプションは、クラスパスからpom.xmlファイルを読み取り(mvnはMETA-INFフォルダーに配置します)、そこからプレーンxmlファイルとして解析することです。

私は最初のオプションで行きます。

于 2009-05-13T12:07:25.810 に答える
0

もう 1 つの方法は、properties-maven-plugin を使用して別のプロパティ ファイルを生成し、このプロパティ ファイルをアプリケーション バンドル名に追加することです。

pom.xml書き込むapplication.propertiesファイルの場合:

<build>
    <plugins>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>properties-maven-plugin</artifactId>
            <version>1.0-alpha-2</version>
            <executions>
                <execution>
                    <phase>process-resources</phase>
                    <goals>
                        <goal>write-project-properties</goal>
                    </goals>
                </execution>
            </executions>
            <configuration>
                <outputFile>${project.build.outputDirectory}/application.properties</outputFile>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>

application.propertiesアプリケーションにを含めるには:

public class MyApplication extends SingleFrameApplication

    public MyApplication() {
        super();
        addGeneratedApplicationProperties();
    }

    private void addGeneratedApplicationProperties() {
        ResourceManager resourceManager = getContext().getResourceManager();
        getContext().setApplicationClass(MyApplication.class);
        List<String> bundleNames = new LinkedList<String>(resourceManager.getApplicationBundleNames());
        bundleNames.add(0, "application");
        resourceManager.setApplicationBundleNames(bundleNames);
    }

    ...
}

ただし、maven-filter-solution の方がエレガントだと思います。

于 2012-08-15T09:27:35.517 に答える
0

maven-antrun-plugin を使用してみます。必要な Maven プロパティを ant に渡し、アプリケーション プロパティ ファイルまたは Spring コンテキスト構成を直接変更する Ant ビルド スクリプトを作成します。

于 2009-05-13T12:09:08.163 に答える