2017-02-26 7 views
0

This referenceは、依存関係にtools.jarを含める方法を説明しました。 しかし、私はそのコードをどこに挿入すべきか分かりません。 Mavenのsetting.xmlまたはJavaプロジェクトのpom.xmlに挿入する必要がありますか?依存関係にtools.jarを含めるにはどうすればいいですか?

Eclipse 4.5.2(Win7のMars.2リリース)でデフォルトのmavenを使用しました。 私のプロジェクトに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_HOMEjava.homeを使用しようとしないでほしい。 私は彼らが異なっていることだけを知っていますが、私はそれらの違いを正確には知りません。

この参照を読んだ後、試してみたいと思います。しかし、私は失敗しました。 を使用してpom.xmlファイルにtools.jarを含めるにはどうすればよいですか?

UPDATE:

私はこのような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> 
+0

のJava 9はもうtools.jarのを持っていないことに注意してください:http://stackoverflow.com/質問/ 35240134/declare-maven-dependency-on-tools-jar-to-work-on -jdk-9 – ZhekaKozlov

答えて

2

あなたのようにあなたのpom.xmlで同様のprofileを定義することができます -

<!--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に置き換えられます。

+0

最初に 'properties'に' java.home'を定義しなければならないので、 'systemPath'で使うことができます。さもなければ、mavenは 'java.home'が何であるかを知らない。 – niaomingjian

+0

いいえ、あなたの環境変数またはbash_profileにまだ設定されていないカスタムパスを指定したい場合にのみ意味します。プロパティは、上記のsystemPathで値を置換しようとしている変数によく似ています。 – nullpointer

+0

私はWindows7を使用しています。自分の環境変数にJAVA_HOMEを設定しました。それは 'D:\ Program Files \ Java \ jdk1.8.0_66'です。私はそれを使うことができた。しかし、私は、 'java.home'の値を明示的に指定しなくても、プロファイル内で' java.home'を使う方法を知りたいだけです。プロファイル内の 'java.home'の値は分かりません。私が知っているのは、Javaアプリケーションで 'System.getProperty(" java.home ")の値は' D:\ Program Files \ Java \ jdk1.6.0_45 \ jre'です。私は2つのバージョンのJDKを自分のマシンにインストールしています。 – niaomingjian

0

@nullpointerが正しければ、javaホームに関するmavenプロパティを追加するだけで、JAVA_HOME環境変数と比較してMaven java.homeプロパティの出力が表示され、mvn validateが実行され、コードが追加されます以下抜粋:たとえば

<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 
+0

私のマシンに 'java.home'と' JAVA_HOME'の結果に影響を与えるために設定できる場所はいくつですか? – niaomingjian

関連する問題