it-swarm.com.de

Wie kopiere ich die Ressource in das Zielverzeichnis von src mit Maven?

Ich arbeite gerade an einem bestehenden Projekt, das eine pom.xml-Datei mit folgendem Inhalt enthält:

<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src</directory>
        <includes>
            <include>**/*.properties</include>
        </includes>
    </resource>
</resources>

Ich habe im Basispfad ein Verzeichnis mit dem Namen Properties, das Properties-Dateien enthält. Ich möchte beim Packen alle Eigenschaftendateien kopieren, die unter properties/in meinem src-Verzeichnis enthalten sind (sonst stürzt das Programm aufgrund fehlender Konfigurationsdateien ab).

Meine Frage ist also: 

Wie kann ich mit Maven Ressourcendateien aufnehmen, die sich nicht im src-Verzeichnis befinden?

Ich versuche es, aber es scheint nicht zu funktionieren:

<resources>
    <resource>
        <filtering>false</filtering>
        <directory>src</directory>
        <includes>
            <include>**/*.properties</include>
            <include>../properties/**</include>
        </includes>
    </resource>
</resources>

Danke für Ihre Hilfe.

11
stankoua

Wenn Ihre Dateistruktur so ist: Standard Directory Layout

enter image description here

Dann müssen Sie nicht die Ressourcen hinzufügen. Maven kopiert nach default alle Dateien und Ordner, die sich im Ordner/src/main/resources befinden, in den Build-Ordner und sucht sie im Stammverzeichnis der kompilierten Klassenpfaddateien.
Wenn Sie beispielsweise eine Datei mit dem Namen configuration.properties in /src/main/resources/configuration.properties haben, wird diese Datei beim Ausführen von mvn clean compile in Ihren /target/classes/configuration.propertiesSo kopiert. Wenn Sie diesen Teil entfernen, befinden sich die Dateien dort, wo Sie möchten Sie

<resource>
    <filtering>false</filtering>
    <directory>src</directory>
    <includes>
        <include>**/*.properties</include>
    </includes>
</resource>
20
zpontikas

Indem Sie Projekte von ant nach maven migrieren, ohne die Projektstruktur zu ändern, setzen Sie Ihr sourceDirectory testSourceDirectory im Build und verwenden Sie das maven-resource-plugin, um die Ziele in der jeweiligen Phase umzusetzen. 

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources01</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes</outputDirectory>
                        <encoding>UTF-8</encoding>
                        <resources>
                            <resource>
                                <directory>${basedir}/src</directory>
                                <includes>
                                    <include>**/*.properties</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
                <execution>
                    <id>copy-resources02</id>
                    <phase>verify</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/build/lib</outputDirectory>
                        <encoding>UTF-8</encoding>
                        <resources>
                            <resource>
                                <directory>${basedir}/target/</directory>
                                <include>*.jar</include>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>
9
aberes

Um alles von der Quelle zum Ziel zu kopieren, habe ich folgendes verwendet

        <plugin>
            <artifactId>maven-resources-plugin</artifactId>
            <version>2.6</version>
            <executions>
                <execution>
                    <id>copy-resources</id>
                    <phase>process-classes</phase>
                    <goals>
                        <goal>copy-resources</goal>
                    </goals>
                    <configuration>
                        <outputDirectory>${basedir}/target/classes/static/</outputDirectory>
                        <resources>
                            <resource>
                                <directory>${basedir}/gui/build/</directory>
                                <includes>
                                    <include>**/*.*</include>
                                </includes>
                            </resource>
                        </resources>
                    </configuration>
                </execution>
            </executions>
        </plugin>