Совместное использование ресурса в /src/test/resources с удаленным ресурсом maven
Я хочу поделиться своим файлом свойств log4j с другими модулями проекта. Я обнаружил, что плагин maven-remote-resource является одним из решений, но у меня есть некоторые проблемы с его использованием.
Файл свойств log4j предназначен для использования только в тестах, поэтому тесты во всех модулях будут ссылаться на один и тот же файл log4j.
Ниже приведена структура моего проекта и подмодулей.
parent-module
-module_A
-src
-test
-properties
-log4j.properties
pom.xml
-module_B
-src
-main
-java
-src
-test
-java
pom.xml
-module_C
-src
-main
-java
-src
-test
-java
pom.xml
-module_D
-src
-main
-java
-src
-test
-java
pom.xml
pom.xml
Пом на "module_A" (тот, который разделяет ресурс, log4j.properties) выглядит следующим образом:
<build> <resources> <resource> <directory>${basedir}/src/test/resources/</directory> <includes> <include>*.properties</include> </includes> </resource> </resources> <pluginManagement> <plugins> <plugin> <artifactId>maven-remote-resources-plugin</artifactId> <version>1.5</version> <executions> <execution> <goals> <goal>bundle</goal> </goals> </execution> </executions> <configuration> <includes> <include>**/*</include> </includes> </configuration> </plugin> </plugins> </pluginManagement> </build>
и в pom родительского модуля, я добавил module_a в список зависимостей и вызвал плагин удаленного ресурса
<dependency> <groupId>com.myproject</groupId> <artifactId>module_A</artifactId> <version>${project.version}</version> <scope>provided</scope> </dependency>
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-remote-resources-plugin</artifactId> <version>1.5</version> <configuration> <resourceBundles> <resourceBundle>com.myproject:module_A:${project.version}</resourceBundle> </resourceBundles> <attachToMain>false</attachToMain> <attachToTest>true</attachToTest> </configuration> <executions> <execution> <goals> <goal>process</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
Когда я пытался выполнить чистую установку maven для всего проекта, каждый отдельный модуль не видит log4j.properties. Но если я перенесу удаленный ресурс на каждый отдельный подмодуль pom, они увидят свойство.
Есть ли способ поделиться свойством log4, объявив один раз на родительском пом?
1 ответ
Я бы предложил сделать Module_A банкой по умолчанию, которая содержит ресурсы в src/main/resources
... ничего не нужно объявлять или настраивать. Только поместите свойства в src/main/resources
каталог.. все будет упаковано в файл ja..
<project>
<parent>
...
</parent>
<artifactId>module_A</artifactId>
</project>
И добавьте вышеуказанный модуль в качестве тестовой зависимости, например:
<dependency>
<groupId>com.myproject</groupId>
<artifactId>module_A</artifactId>
<version>${project.version}</version>
<scope>test</scope>
</dependency>
в каждом модуле, который нуждается в конфигурации. Чем у вас есть свойства в пути к тестовому классу, и он будет работать...