[英]NetBeans: add Spring IOC to maven based Swing Application Framework project
[英]Injecting Maven project information into Swing Application Framework resources?
我有一個使用Swing應用程序框架的Maven項目,並希望將pom.xml中的項目信息注入到我的應用程序的全局資源中,以避免重復。
基本應用程序(通過netbeans提供)使用Application.title,Application.version,Application.vendor,Application.description資源等獲取Window標題以及有關框配置的信息,但我找不到在運行時以編程方式設置這些值的方法,我不是行家,所以沒有在構建時注入它們的技能。
任何人都對如何最好地達到預期結果有任何建議?
您可以嘗試使用過濾的資源 。 如果創建屬性文件,請說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
,此文件可能沒有您需要的所有信息。
您可以將它們保留在separte屬性文件中,並從pom.xml和您的應用程序中讀取它。
另一種選擇是從類路徑中讀取pom.xml文件(mvn會將其放在META-INF文件夾中),然后從那里解析為純XML文件。
我會選擇第一個。
另一種方法是使用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方法更優雅。
我會嘗試使用maven-antrun-plugin。 將必要的maven屬性傳遞給ant並創建一個ant構建腳本,該腳本可以直接修改應用程序屬性文件或spring上下文配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.