Внедрить информацию о проекте Maven в ресурсы Swing Application Framework? - PullRequest
1 голос
/ 13 мая 2009

У меня есть проект Maven, использующий среду приложений Swing, и я хотел бы внедрить информацию о проекте из файла pom.xml в глобальные ресурсы моего приложения, чтобы избежать дублирования.

Базовое приложение (предоставляется через netbeans) использует ресурсы Application.title, Application.version, Application.vendor, Application.description и т. Д. Для заголовков окон и конфигурации ящика, но я не могу найти способ программной установки этих значений в во время выполнения, и я не maven maven, поэтому не имею навыков, чтобы вводить их во время сборки.

Кто-нибудь есть какие-либо рекомендации о том, как лучше всего достичь желаемого результата?

Ответы [ 4 ]

4 голосов
/ 05 ноября 2009

Вы можете попробовать использовать отфильтрованные ресурсы . Если вы создаете файл свойств, скажите 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") , чтобы прочитать его в своем приложении.

Вист maven автоматически создает файл /META-INF/maven/$groupId/$artifactId/pom.properties, он может не иметь всю необходимую информацию.

1 голос
/ 13 мая 2009

Вы можете сохранить их в отдельном файле свойств и прочитать его как из pom.xml, так и из вашего приложения.

Другой вариант - прочитать файл pom.xml из classpath (mvn поместит его в папку META-INF) и проанализировать его как простой xml-файл.

Я бы выбрал первый вариант.

0 голосов
/ 15 августа 2012

Другой способ - создать отдельный файл свойств с помощью свойства-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-решений более элегантно.

0 голосов
/ 13 мая 2009

Я бы попробовал использовать maven-antrun-plugin. Передайте необходимые свойства maven в ant и создайте скрипт сборки ant, который напрямую изменяет файл свойств приложения или конфигурацию контекста Spring.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...