Ich bin neu in Maven. Ich entschuldige mich, wenn das eine dumme Frage ist. Ich habe ein Maven Eclipse-Projekt mit einer Pom-Datei, die mit dem Schatten-Plugin ein lauffähiges Glas erstellt. Mein Plan ist, eine von mehreren Eigenschaftendateien im Bau zu enthalten (korrigiere mich bitte, wenn meine Terminologie falsch ist. Ich bin wirklich grün). Ich habe mehrere Eigenschaftendateien in src/main/resources.Verwenden von verschiedenen Eigenschaften Dateien für ausführbare Gläser, Maven Eclipse
Ich möchte einen Weg finden, in das ausführbare jar nur die Eigenschaftendatei zu integrieren, die gilt. Insbesondere habe ich zwei Eigenschaftendateien (config1.properties, config2.properties) in meinem Projekt und jeder Build wird nur eine dieser Dateien verwenden, abhängig von der gewünschten Funktionalität des resultierenden Jar. Der Properties-Datei wird ein generischer Name zugewiesen, insbesondere "defaultconfig.properties", damit sie gut mit dem Code abgespielt wird.
Die resultierenden JAR-Dateien (eine andere für jede unterschiedliche Eigenschaftendatei) werden als separate Cron-Jobs ausgeführt. Ich denke, dass ich verschiedene Jenkins-Projekte verwenden werde, um die ausführbaren Jars auf bestimmten Servern zu verteilen, basierend darauf, für welche Aufgabe die Eigenschaftendatei das Projekt konfiguriert (ich glaube, ich hatte diesen Teil). Die Cron-Jobs werden auf diesen Servern ausgeführt.
meine Fragen sind:
1), wobei sich die Logik gehen, die bestimmt, welche Eigenschaften in der runnable jar enthalten Datei?
Beispiel: Ich habe config1.properties (das angibt, dass var1 = blah und var2 = blip und var3 = boink) und config2.properties (das angibt, dass var1 = duh var2 = dip und var3 = doink) . Wo kann ich Maven mitteilen, welche dieser beiden Dateien für bestimmte Builds verwendet werden sollen?
2) soll ich einen Parameter übergeben, der Maven mitteilt, welche Eigenschaftendatei zu verwenden ist? Wenn ja, an wen überlasse ich diesen Parameter auch? Ist das etwas, das in einem Jenkins-Projekt konfiguriert werden kann? (Auch wenn ich nicht sicher bin, ob dies ein Maven-Problem oder ein Jenkins-Problem sein würde.)
Hier ist ein relevanter Teil meiner pom.xml Datei:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.foo.dashboard.bar.Runner</mainClass>
</transformer>
</transformers>
<finalName>FooBar</finalName>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
ich habe mit IncludeResourceTransformer versucht, die Eigenschaften umbenennen Datei und war aber nicht sicher, wie die Logik enthält, für Dateien basierend auf gewünschte jAR-Datei Funktionalität Eigenschaften wechseln.
Vielen Dank.
suchen Sie so etwas? http://rajendra.wordpress.com/2012/02/22/maven-filtering-resources-conditional-while-packaging/ – DevZer0
Ich denke, was Sie brauchen, sind * Profile *: Sie können mehrere von ihnen definieren und jeder von ihnen kann Definieren Sie die gleiche Eigenschaft mit unterschiedlichen Werten. Dann können Sie die Eigenschaft verwenden, um anzugeben, welche Eigenschaftendateien Sie in Ihren aktuellen Build aufnehmen müssen. – rlegendi
@ DevZer0 - Dies scheint einen Teil meines Wunsches zu beantworten, nämlich eine Möglichkeit zur Verfügung zu stellen, die Eigenschaftendateien anzupassen, die während des Builds verwendet werden. Genial. Ein paar Follow-up-Fragen. Ich bemerke, dass die Ressource Tag ein Boolescher ist. Was wäre, wenn es mehr als 2 Konfigurationsmöglichkeiten gäbe? Und da dies eine Möglichkeit bietet, zwischen Konfigurationen zu wechseln, wie geben Sie den Wert an, der beim Generieren der JAR-Datei verwendet werden soll? –