有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mavenjava:设置pom。xml属性

我有一个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>

现在我的代码将如何运行这个特定的id


共 (2) 个答案

  1. # 1 楼答案

    您可以通过两种方式进行此配置:


    1) 显式配置文件

    打开项目目录中可用的Mavenpom.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设置激活配置文件

    打开Mavensettings.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

    参考资料:

  2. # 2 楼答案

    运行mvn命令时,可以将属性作为命令行参数传递,例如:

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

    关于另一种解决方案,请看maven condition based on os family

    对于配置文件:

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

    定义特定于概要文件的属性后,请像使用任何其他属性一样使用它们