如何在依赖项中包含tools.jar?

时间:2017-02-26 07:13:04

标签: java maven m2eclipse

This reference解释了如何在依赖项中包含tools.jar。 但我不知道我应该在哪里插入该代码? 我应该将它插入Maven的setting.xml还是我的Java项目的pom.xml

我在Eclipse 4.5.2中使用了默认maven(Win7中的Mars.2版本)。 我想在项目中加入tools.jar。 我可以使用以下代码将其包含在pom.xml

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <scope>system</scope>
    <version>1.4.2</version>
    <systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

想要尝试使用java.home,而不是JAVA_HOME。 我只知道它们不同,但我并不完全清楚它们之间的区别。

阅读完该参考资料后,我想尝试一下。但我失败了。 那么我应该如何使用java.home配置pom.xml文件以包含tools.jar

更新

我可以像这样引用java.home

<project ...>

...

    <properties>
        <java.home>D:\Program Files\Java\jdk1.6.0_45</java.home>
    </properties>
    <dependencies>
        <dependency>
            <groupId>com.sun</groupId>
            <artifactId>tools</artifactId>
            <version>1.4.2</version>
            <scope>system</scope>
            <systemPath>${java.home}/lib/tools.jar</systemPath>
        </dependency>
    </dependencies>
</project>

2 个答案:

答案 0 :(得分:2)

您可以在profile中定义类似的pom.xml作为 -

<!--This can help you use a custom java home path-->
<properties>
  <java.home>/your/path/to/java</java.home>
</properties>

...

<profiles>
  <profile>
    <id>default-tools.jar</id>
    <activation>
      <property>
        <name>java.vendor</name>
        <value>Sun Microsystems Inc.</value>
      </property>
    </activation>
    <dependencies>
      <dependency>
        <groupId>com.sun</groupId>
        <artifactId>tools</artifactId>
        <version>1.4.2</version>
        <scope>system</scope>
        <systemPath>${java.home}/relative/path/to/lib/tools.jar</systemPath>
      </dependency>
  </dependencies>
</profile>

使用reference mentioned形成上面的个人资料。

您需要在properties下指定自定义Java主目录的路径,这可以在systemPath下的tools.jar中进一步替换它,您将进一步指定Input = input("TYPE: ") with open("tryme.txt","a+") as f: f.write(Input + "\n\n\n" ) f.seek(0,0) x = f.read() print(x) 的相对路径

答案 1 :(得分:0)

@nullpointer是正确的,只是为了添加关于你的java home的maven属性,你可以看到Maven java.home属性的输出与运行mvn validate的JAVA_HOME环境变量相比并添加到你的pom下面的代码片段:

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>1.1</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                        <configuration>
                            <tasks>
                                <echo>Displaying value of java home property: ${java.home}</echo>
                                <echo>Displaying value of JAVA_HOME variable: ${env.JAVA_HOME}</echo>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

例如,在我的系统上,它输出(除其他外):

 [echo] Displaying value of java home property: /usr/lib/jvm/java-8-openjdk-amd64/jre
 [echo] Displaying value of JAVA_HOME variable: /usr/lib/jvm/java-8-openjdk-amd64
相关问题