Создайте проект Java с параметрами, используя Maven - PullRequest
0 голосов
/ 13 сентября 2018

Я хочу построить Java-проект, используя Maven с параметрами , которые меняются в каждой сборке.Например, один параметр - это ключ, который проверяется внутри программы.

Параметры не должны быть считаны после сборки проекта.Попробовал другой подход, включая плагины из org.codehaus.mojo… но возникли проблемы «выполнение плагина не покрыто жизненным циклом» ....

    /****************************/
    /**read property values     */
    /****************************/
    //Create a new property list
    Properties properties = new Properties();
    //create a input strem
    InputStream inputStream = null;
    //try to read the property file
    try {
        String filename ="restApi.properties";
        inputStream = Main.class.getClassLoader().getResourceAsStream(filename);
        if(inputStream==null) {
            System.out.println("Unable to read required properties");
        }
        properties.load(inputStream);
        System.out.println(properties.getProperty("property_mainUrlValue"));
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (inputStream != null) {
            try {
                inputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

my pom.xml

<properties>        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <property_mainUrlValue>property_mainUrlValue</property_mainUrlValue>
<properties>

<build>
    <sourceDirectory>src</sourceDirectory>
    <pluginManagement>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>properties-maven-plugin</artifactId>
            <version>1.0-alpha-2</version>
            <executions>
                <execution>
                    <phase>generate-resources</phase>
                    <goals>
                        <goal>write-project-properties</goal>
                    </goals>
                    <configuration>
                        <outputFile>${project.build.outputDirectory}/restApi.properties</outputFile>
                    </configuration>
                </execution>
            </executions>
        </plugin>
    </plugins>
    </pluginManagement>
</build>

ошибка, показанная в затмении

     Unable to read required properties
     Exception in thread "main" java.lang.NullPointerException
at java.util.Properties$LineReader.readLine(Unknown Source)
at java.util.Properties.load0(Unknown Source)
at java.util.Properties.load(Unknown Source)
at itAsset.Main.main(Main.java:58)

1 Ответ

0 голосов
/ 13 сентября 2018

Полагаю, вы ищете то, что Maven называет (по какой-то причине, которую я не понимаю) " filtering ".

Основная идея такова:

Вы включаете функцию, включив следующую конфигурацию в pom.xml:

...
<resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
</resource>
...

Это приводит к тому, что при запуске mvn resources:resources -Dkey="mmm123", и у вас есть ресурс src/main/resources/restApi.properties, содержащий строку

appKey=${key}

тогда Maven создаст вывод ресурса в target/classes/restApi.properties, который содержит

appKey=mmm123

Подробное описание здесь: http://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html

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