Подтвердить что ты не робот

Укажите общие ресурсы в мультимодульном проекте maven

Есть ли способ совместного использования ресурсов между модулями родительского проекта в Maven? Например, я хотел бы указать один файл log4j.properties для всех модулей в многомодульном проекте Maven.

Как правило, я использую Eclipse IDE для создания родительского проекта, выбирая общий проект и затем конвертируя его в проект Maven, указав упаковку pom. Это создает "чистую" структуру проекта без src и т.д. Папок. Интересно, где такой общий ресурс следует поместить в этом случае.

EDIT1: я хотел бы поместить общие ресурсы в родительский проект.

4b9b3361

Ответ 1

Я бы создал один дополнительный "базовый" модуль (проект), упаковку "jar", который содержит общие ресурсы в src/main/resources. Тогда я заставлю другие модули зависеть от этого проекта. Теперь они видят общие ресурсы в своих классах.

Ответ 2

Возможность Antoher - использовать удаленный пакет ресурсов. Вы можете настроить его в родительском проекте. В этом примере я хотел скопировать некоторые файлы только для тестов. Если вы используете это, вам нужно будет создать пакет в другом проекте.

    <plugin>      
        <groupId>org.apache.maven.plugins</groupId>         
        <artifactId>maven-remote-resources-plugin</artifactId>
        <version>1.5</version>
        <configuration>
            <resourceBundles>
                <resourceBundle>es.sca:myBundle:1.0.0</resourceBundle>
            </resourceBundles>
            <attachToMain>false</attachToMain>
            <attachToTest>true</attachToTest>
            <appendedResourcesDirectory>${basedir}/src/test/resources</appendedResourcesDirectory>
        </configuration>            
        <executions>
            <execution>
                <goals>
                    <goal>process</goal>
                </goals>
            </execution>
        </executions>                   
    </plugin>                 

Ответ 3

Да, это кажется возможным решением. Но мне было интересно, можно указать эти ресурсы в родительском проекте (без введение дополнительного модуля), поскольку родительский проект определяет все общие зависимости и конфигурации Maven для ребенка модулей, я думаю, что родительский проект является наиболее подходящим местом также для общих ресурсов.

В случае типа упаковки pom, когда цель пакет указан для управления вашими совместно используемыми ресурсами, просто добавьте следующую (проверьте папки) в build раздел файла pom:

        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
       <executions>
           <execution>
               <id>copy-config-files</id>
               <phase>package</phase>
               <goals>
                   <goal>copy-resources</goal>
               </goals>
               <configuration>
                   <outputDirectory>${project.build.directory}/logconfig</outputDirectory>
                   <resources>
                       <resource>
                        <filtering>false</filtering>
                        <directory>${project.basedir}/src/main/resources</directory>
                       </resource>
                   </resources>
               </configuration>
        </execution>
       </executions>
    </plugin>

Ответ 4

Мне удалось работать так:

Я создаю файл project/assembly/test/resources/META-INF/persistence.xml и добавляю его в свой pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-test-persistence-xml-resources</id>
            <phase>process-test-sources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>src/</outputDirectory>
                <resources>
                    <resource>
                        <directory>${project.parent.basedir}/assembly/</directory>
                        <filtering>true</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>