2 Stimmen

Was ist der Zweck von "properties-maven-plugin" und "filter" in einem Maven-Profil?

Ich hätte gerne eine Erklärung für das maven filters Tag und wie es mit dem files Tag aus dem Plugin properties-maven-plugin korrespondiert.

Das betreffende Profil:

<profile>
    <id>local-spm-caefeeder-preview</id>
    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>properties-maven-plugin</artifactId>
                <version>1.0-alpha-1</version>
                <executions>
                    <execution>
                        <phase>initialize</phase>
                        <goals>
                            <goal>read-project-properties</goal>
                        </goals>
                        <configuration>
                        <quiet>true</quiet>
                        <files>
                            <file>${main.basedir}/src/config/global.properties</file>
                            <file>${main.basedir}/src/config/caefeeder/caefeeder_global.properties</file>
                            <file>${main.basedir}/src/config/caefeeder/caefeeder_preview.properties</file>
                            <file>${main.basedir}/src/config/local.properties</file>
                            <file>${main.basedir}/src/config/${user.name}.properties</file>
                        </files>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <filters>
            <filter>${main.basedir}/src/config/caefeeder/caefeeder_global.properties</filter>
            <filter>${main.basedir}/src/config/caefeeder/caefeeder_preview.properties</filter>
            <filter>${main.basedir}/src/config/local.properties</filter>
            <filter>${main.basedir}/src/config/${user.name}.properties</filter>
        </filters>
    </build>
</profile>

Nach meinen Recherchen definieren Filter Dateien, in denen Variablen enthalten sind, die ersetzt werden müssen. Stellt "properties-maven-plugin" diese Variablen aus den im files-Tag definierten Dateien bereit?

0 Stimmen

Beachten Sie, dass properties-maven-plugin kein offizielles Maven-Plugin ist und bei der Arbeit in einer IDE schlecht unterstützt werden kann.

6voto

Michał Kalinowski Punkte 15759

Damit die Maven-Filter tatsächlich funktionieren, müssen Sie zunächst die Ressourcenfilterung für bestimmte Verzeichnisse aktivieren, z.B.

  <resource>
    <directory>src/main/resources</directory>
    <filtering>true</filtering>
  </resource>

Die Auflistung einiger Filterdateien bringt nichts, da diese Lesewerte nirgendwo verwendet werden.

Hier nun die Erklärung des Unterschieds. Ziel read-project-properties von properties-maven-plugin liest einige Werte aus Eigenschaftsdateien und speichert sie als Maven-Variablen. Es wird ziemlich früh im Maven Lebenszyklus ausgeführt ( <phase>initialize</phase> ), so dass sie fast von Anfang an verfügbar sind. Wir können also sagen, dass dies ein Weg ist, Maven-Eigenschaften zu externalisieren, indem wir sie in einige reguläre Eigenschaftsdateien packen, anstatt möglicherweise riesige <properties> Block in pom.xml . Was hier wichtig ist: Maven-Variablen werden bei der Ressourcenfilterung verwendet.

Nun, die <filters> Tag. Diese Dateien stellen keine Maven-Projektvariablen zur Verfügung. Sie bieten Variablen, die nur für die Filterung von Ressourcen verwendet werden.

Im Zusammenhang mit der Ressourcenfilterung ist das tatsächliche Verhalten also ziemlich identisch. Eigenschaften gelesen von properties-maven-plugin wird für die Filterung von Ressourcen sowie für die aus Filterdateien gelesenen Eigenschaften verwendet. Allerdings werden die von properties-maven-plugin werden auch als Maven Projekteigenschaften verfügbar sein, so dass sie z.B. in der Konfiguration von Plugins oder anderen POM-bezogenen Dingen verwendet werden können.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X