Java: установить свойство pom.xml - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть проект Java Meven, и внутри моего pom.xml у меня есть это property:

<properties>
    <suiteXmlFile>testing.xml</suiteXmlFile>
    <JAVA_1_8_HOME>C:\Program Files\Java\jdk1.8.0_181\bin\javac.exe</JAVA_1_8_HOME>
</properties>

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
         <fork>true</fork>
         <executable>${JAVA_1_8_HOME}</executable>
    </configuration>
</plugin>

Итак, я запускаю свой проект из Windows Я просто набираю mvn test

В случае, если у меня MACOS/Linux, этот путь не существует, и мне интересно, какие решения могут быть найдены, чтобы решить эту проблему.

ОБНОВЛЕНИЕ

Как совет, я добавляю этот профиль:

<profile>
            <id>platform-windows</id>
            <activation>
                <os>
                    <family>windows</family>
                </os>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.8.0</version>
                        <configuration>
                            <fork>true</fork>
                            <executable>C:\Program Files\Java\jdk1.8.0_181\bin\javac.exe</executable>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>mac</id>
            <activation>
                <os>
                    <family>mac</family>
                </os>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>3.8.0</version>
                        <configuration>
                            <fork>true</fork>
                            <executable>/usr/bin/javac</executable>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

Теперь, как мой код будет теперь запускать этот конкретный идентификатор?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы можете сделать эту конфигурацию двумя способами:


1) Явный профиль

Открыть файл Maven pom.xml, доступный в каталоге вашего проекта:

<properties>
    <suiteXmlFile>testing.xml</suiteXmlFile>
    <JAVA_1_8_HOME>C:\Program Files\Java\jdk1.8.0_181\bin\javac.exe</JAVA_1_8_HOME>
    <JAVA_1_8_HOME_LINUX>/usr/java/jdk1.8.0_181/</JAVA_1_8_HOME_LINUX>
</properties>

<profiles>
    <!-- Windows Profile-->
    <profile>
        <id>jdk-8-windows</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
       <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <fork>true</fork>
                        <executable>${JAVA_1_8_HOME}</executable>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </profile>

   <!-- Mac/Linux Profile-->
    <profile>
        <id>jdk-8-linux</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <fork>true</fork>
                        <executable>${JAVA_1_8_HOME_LINUX}</executable>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
   </profile>

</profiles>
  • Активный профиль по умолчанию был определен как: jdk-8-windows
  • Если основным профилем является Mac / Linux, используйте: <activeProfile>jdk-8linux</activeProfile>
  • Для запуска вашего профиля Mac / Linuxиспользуйте: mvn test -P jdk-8-linux

2) Активация профиля через настройки Maven

Открыть файл Maven settings.xml, доступный в каталоге %USER_HOME%/.m2, где %USER_HOME% представляет домашнюю страницу пользователякаталог.Если файл settings.xml отсутствует, создайте новый.

<settings>
  [...]
  <profiles>
    [...]

    <!-- Windows Profile-->
    <profile>
      <id>jdk-8-windows</id>
        <properties>
          <JAVA_1_8_HOME>C:\Program Files\Java\j2sdk1.4.2_09</JAVA_1_8_HOME>
        </properties>
    </profile>

    <!-- Mac/Linux Profile-->
    <profile>
      <id>jdk-8-linux</id>
        <properties>
          <JAVA_1_8_HOME_LINUX>/usr/bin/javac</JAVA_1_8_HOME_LINUX>
        </properties>
    </profile>

  </profiles>
  [...]
  <activeProfiles>
    <activeProfile>windows</activeProfile>
  </activeProfiles>
</settings>
  • Активный профиль по умолчанию был определен как: jdk-8-windows
  • Если основной профильMac / Linux, используйте: <activeProfile>linux</activeProfile>
  • Для запуска вашего профиля Mac / Linux используйте: mvn test -P jdk-8-linux

Ссылка:

0 голосов
/ 19 сентября 2018

Вы можете передать свойство в качестве аргумента командной строки при запуске команды mvn, например:

mvn test"-DJAVA_1_8_HOME=<OS specific path>"

Для других решений взгляните на условие maven, основанное на семействе os

Для профилей:

<project>
    <profiles>
         <profile>
             <properties>
                 // Define profile specific properties here
             </properties>
         </profile>
    </profiles>
</project>

После определения свойств профиля используйте их так же, как и любое другое свойство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...