Как прочитать свойства Maven из теста JUnit? - PullRequest
10 голосов
/ 26 октября 2011

Я использую Maven 3.0.3 с JUnit 4.8.1.Как в моем тесте JUnit я прочитал project.artifactId, определенный в моем файле Maven pom.xml?В моем pom у меня есть

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.myco.pplus2</groupId>
<artifactId>pplus2</artifactId>

Но это не работает в моем тесте JUnit для получения идентификатора артефакта ...

@Before
public void setUp() { 
    ...        
    System.out.println( "artifactId:" + System.getProperty("project.build.sourceEncoding") ); 
}   // setUp

Вышеприведенный вывод "artifactId: null",В любом случае, ценю любую помощь, - Дэйв

Ответы [ 3 ]

10 голосов
/ 27 октября 2011

Свойства проекта Maven не добавляются автоматически в свойства системы Java.Для этого есть немало вариантов.Для этой конкретной потребности вы можете определить свойство System для maven-surefire-plugin (тот, который выполняет тесты), а затем использовать метод System.getProperty.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.10</version>
    <configuration>
        <systemProperties>
            <property>
                <name>projectArtifactId</name>
                <value>${project.artifactId}</value>
            </property>
        </systemProperties>
    </configuration>
</plugin>

Другой способ добиться получения свойств Maven для тестов JUnitвероятно, будет фильтрация ресурсов для тестовых исходных файлов.

PS.Чтение конфигураций Maven во время выполнения, даже в тестах, довольно грязно, ИМХО.:)

7 голосов
/ 26 октября 2011

Посмотрите на systemPropertyVariables (и друзей) для уверенности. Он делает то, что вы хотите. AFAIK, нет никакого способа просто передать все свойства maven, не перечисляя их.

0 голосов
/ 16 октября 2013

Иногда Eclipse настроен на использование Java Builder для проекта-> Автоматически строить (Правой кнопкой мыши-> Проект-> Свойства-> Строители)

Если это так, иногда фильтрация ресурсов не работает. У вас есть несколько вариантов:

  1. Укажите свойство в файле pom.xml, как указано выше.
  2. Укажите файл свойств и выполните фильтрацию ресурсов Maven
  3. Используйте Maven Invoker

2 и 3 описаны в http://scottizu.wordpress.com/2013/10/16/reading-the-project-version-from-the-maven-pom-file/

...