Czy można przekazać argumenty z wiersza poleceń do właściwości w pom.xml
pliku? na przykład biegammvn ... argument
i w pom.xml
<properties>
<myproperty> here should add argument from command line</myproperty>
</properties>
Dziękuję za pomoc.
Odpowiedzi:
Na przykład dla swojej nieruchomości:
Zwróć uwagę na cudzysłowy wokół całej definicji właściwości. Będziesz ich potrzebować, jeśli twoja nieruchomość zawiera spacje.
źródło
mvn clean install "-Dprop1=value1" "-Dprop2=value2"
Użyłem wtyczki właściwości, aby rozwiązać ten problem.
Właściwości są definiowane w pom i zapisywane w pliku my.properties, skąd można uzyskać do nich dostęp z kodu Java.
W moim przypadku jest to kod testowy, który musi uzyskać dostęp do tego pliku właściwości, więc w pom plik właściwości jest zapisywany do testOutputDirectory mavena:
<configuration> <outputFile>${project.build.testOutputDirectory}/my.properties</outputFile> </configuration>
Użyj outputDirectory, jeśli chcesz, aby właściwości były dostępne przez kod aplikacji:
<configuration> <outputFile>${project.build.outputDirectory}/my.properties</outputFile> </configuration>
Dla tych, którzy szukają pełniejszego przykładu (zajęło mi trochę majstrowania, aby to działało, ponieważ nie rozumiałem, jak nazewnictwo tagów właściwości wpływa na możliwość ich pobrania w innym miejscu w pliku pom), mój pom wygląda następująco:
<dependencies> <dependency> ... </dependency> </dependencies> <properties> <app.env>${app.env}</app.env> <app.port>${app.port}</app.port> <app.domain>${app.domain}</app.domain> </properties> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>properties-maven-plugin</artifactId> <version>1.0.0</version> <executions> <execution> <phase>generate-resources</phase> <goals> <goal>write-project-properties</goal> </goals> <configuration> <outputFile>${project.build.testOutputDirectory}/my.properties</outputFile> </configuration> </execution> </executions> </plugin> </plugins> </build>
A w wierszu poleceń:
Zatem do tych właściwości można uzyskać dostęp z kodu Java:
źródło
Wewnątrz pom.xml
<project>
.....
<profiles> <profile> <id>linux64</id> <activation> <activeByDefault>true</activeByDefault> </activation> <properties> <build_os>linux</build_os> <build_ws>gtk</build_ws> <build_arch>x86_64</build_arch> </properties> </profile> <profile> <id>win64</id> <activation> <property> <name>env</name> <value>win64</value> </property> </activation> <properties> <build_os>win32</build_os> <build_ws>win32</build_ws> <build_arch>x86_64</build_arch> </properties> </profile> </profiles>
.....
<plugin> <groupId>org.eclipse.tycho</groupId> <artifactId>target-platform-configuration</artifactId> <version>${tycho.version}</version> <configuration> <environments> <environment> <os>${build_os}</os> <ws>${build_ws}</ws> <arch>${build_arch}</arch> </environment> </environments> </configuration> </plugin>
.....
W tym przykładzie po uruchomieniu pom bez żadnego argumentu
mvn clean install
zostanie wykonany domyślny profil.Po wykonaniu z
mvn -Denv=win64 clean install
profil win64 zostanie wykonany.
Zobacz http://maven.apache.org/guides/introduction/introduction-to-profiles.html
źródło
Nazwy zmiennych można nadawać jako pliki projektu. Na przykład w konfiguracji wtyczki podaj tylko jeden tag, jak poniżej: -
<projectFile>${projectName}</projectFile>
Następnie w linii poleceń możesz podać nazwę projektu jako parametr: -
źródło
Następnie używając w ten sposób w POM.xml
<properties> <myproperty>${propEnv}</myproperty> </properties>
źródło