1. ホーム
  2. java

JDK tools.jar を maven 依存にする。

2023-07-17 13:24:51

質問

JDK tools.jar をコンパイル時の依存関係に置きたいと考えています。いくつかの例では システムパス プロパティを使用するような例を見つけました。

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <scope>system</scope>
  <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

問題は、Mac Os Xではパスが正しくないことです(ただし、WindowsとLinuxでは正しいです)。それに対して、正しいパスは ${java.home}/../Classes/classes.jar です。 .

私は、システムが Mac Os X として検出された場合、値が次のように設定されるような maven プロパティを定義する方法を探しています。 ${java.home}/../Classes/classes.jar に設定されます。 に設定され、それ以外の場合は を${java.home}/../lib/tools.jarに設定してください。 (ANTで可能なように)。どなたかお分かりになる方いらっしゃいますか?

どのように解決するのですか?

mavenプロファイルを紹介していただき、ありがとうございます。

私は上記のようにプロファイルを使用し、目的のファイルの存在に基づいてプロファイルをアクティブにすることで、:

<profiles>
    <profile>
        <id>default-profile</id>
        <activation>
            <activeByDefault>true</activeByDefault>
            <file>
                <exists>${java.home}/../lib/tools.jar</exists>
            </file>
        </activation>
        <properties>
            <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
        </properties>
    </profile>
    <profile>
        <id>mac-profile</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <file>
                <exists>${java.home}/../Classes/classes.jar</exists>
            </file>
        </activation>
        <properties>
            <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
        </properties>
    </profile>
</profiles>

プロパティセクションは、指定されたプロパティの存在に基づいてプロファイルを有効にするために、有効化セクションでのみ使用することができます。プロパティを定義するには、上記のようにプロパティセクションを使用する必要があります。