it-roy-ru.com

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

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

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

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

24
jilt3d

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

25
Andreas_D

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

    <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>                 
4
borjab

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

В случае типа упаковки pom , когда цель package указана для управления общими ресурсами, просто добавьте следующее (проверьте папки) в 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>
1
harvyS

Я думаю, что вы можете просто добавить ресурсы и/или элементы testResources в ваш pom . для доступа к каталогу дополнительных тестовых ресурсов добавьте:

    <testResources>
        <testResource>
            <directory>src/test/resources</directory>
        </testResource>
        <testResource>
            <directory>../global/src/test/resources</directory>
        </testResource>
    </testResources>

см. Maven - Переопределить папку с тестовыми ресурсами

0
work.asr