wake-up-neo.com

Geben Sie gemeinsame Ressourcen in einem Maven-Projekt mit mehreren Modulen an

Gibt es eine Möglichkeit, Ressourcen zwischen Modulen eines übergeordneten Projekts in Maven zu teilen? Zum Beispiel möchte ich eine log4j.properties-Datei für alle Module in einem Maven-Projekt mit mehreren Modulen angeben.

Im Allgemeinen verwende ich Eclipse IDE, um das übergeordnete Projekt zu erstellen, indem Sie ein allgemeines Projekt auswählen und es dann in ein Maven-Projekt konvertieren, indem Sie eine Verpackung von pom angeben. Dadurch wird eine "saubere" Projektstruktur ohne die Ordner src und usw. erstellt. Ich frage mich, wo eine solche gemeinsame Ressource in diesem Fall platziert werden sollte.

EDIT1 : Ich möchte die gemeinsamen Ressourcen in das übergeordnete Projekt einfügen.

24
jilt3d

Ich würde ein zusätzliches "Basis" -Modul (Projekt) erstellen, das "jar" verpackt und die gemeinsamen Ressourcen in src/main/resources enthält. Dann würde ich die anderen Module von diesem Projekt abhängig machen. Jetzt sehen sie die gemeinsamen Ressourcen auf ihren Klassenpfaden.

25
Andreas_D

Eine andere Möglichkeit besteht in der Verwendung eines Remote-Ressourcenpakets. Sie könnten es im übergeordneten Projekt konfigurieren. In diesem Beispiel wollte ich einige Dateien nur für Tests kopieren. Wenn Sie dies verwenden, müssen Sie das Bundle in einem anderen Projekt erstellen. 

    <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

Ja, es scheint eine mögliche Lösung zu sein. Ich war jedoch interessiert, ob es Möglich ist, diese Ressourcen im übergeordneten Projekt anzugeben (ohne Zusatzmodul einzuführen), da das übergeordnete Projekt alle Der allgemeinen Abhängigkeiten und Maven-Konfigurationen für angibt Ich bin der Meinung, dass das übergeordnete Projekt der geeignetste Ort ist, auch für die gemeinsamen Ressourcen.

Im Falle des Pakettyps pom , wenn target package zum Verwalten der freigegebenen Ressourcen angegeben wurde, fügen Sie einfach next (Ordner prüfen) in den Abschnitt build der pom - Datei ein:

        <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

Ich denke, Sie können einfach die Ressourcen und/oder testResources-Elemente zu Ihrem Pom hinzufügen. Z. Um auf ein zusätzliches Testressourcenverzeichnis zuzugreifen, fügen Sie Folgendes hinzu:

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

siehe Maven - Testressourcenordner überschreiben

0
work.asr

Ich habe es geschafft, so zu arbeiten:

Ich erstelle eine Datei project/Assembly/test/resources/META-INF/persistence.xml und füge diese meiner pom.xml hinzu:

<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>
0
Zeeshan Asghar