java - JDK tools.jar كما الاعتما maven



maven-2 (4)

بطريقة ما ، يخفق الكسوف في النوافذ في التقاط {java.home}. لذا ، اضطررت إلى تعيين JAVA_HOME بدلاً من java.home. تم تعيين JAVA_HOME في Run-> Run Configurations-> Environment. هذا العمل بالنسبة لي مع JDK القياسية (وليس أبل JDK).

<profiles>
        <profile>
            <id>windows-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}/../lib/tools.jar</exists>
                </file>
            </activation>
            <properties>
                <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
            </properties>
        </profile>
    </profiles>


    <dependencies>
        <dependency>
                <groupId>jdk.tools</groupId>
                <artifactId>jdk.tools</artifactId>
                <version>jdk1.8.0</version>
                <scope>system</scope>
                <systemPath>${toolsjar}</systemPath>
            </dependency>
        </dependencies>

https://ffff65535.com

أود أن أضع JDK tools.jar كما تجميع التبعية. لقد وجدت بعض الأمثلة التي تشير إلى استخدام خاصية systemPath مثل ما يلي:

<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 .

أنا أبحث عن طريقة لتحديد خاصية maven بحيث إذا تم اكتشاف النظام كـ Mac Os X ، يتم تعيين القيمة إلى $ {java.home} /../ Classes / classes.jar ، وإلا يتم تعيينها على $ {java.home} /../ lib / tools.jar (مثل ما يمكن فعله مع ANT). هل لدى أحدهم فكرة؟


بلدي الحل:

  1. وضع أدوات الشمس. jarah_home $JAVA_HOME/lib
  2. إنشاء ارتباط رمزي في $JAVA_HOME/.. اسمه lib حيث سيكون الهدف $JAVA_HOME/lib

شكرا لك على تقديم لي ملامح 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>

لقد نشرت هذه الإجابة لإبراز خطأ في المشاركة السابقة: لا يمكن استخدام قسم الخصائص إلا في قسم التنشيط من أجل تنشيط ملف تعريف استنادًا إلى وجود الخاصية المحددة. لتحديد خاصية ، يجب استخدام قسم الخصائص كما هو موضح أعلاه.


مرحباً ، أعلم أنكم جميعاً أذكياء ، لكن ذلك تسبب لي في بضعة أيام لمعرفة أن الإجابة لم تكتمل - فكل من الملف الشخصي والتبعية ضروريان. آمل ألا يضيع أحد الوقت في هذا مرة أخرى. يرجى الاطلاع على الرمز الكامل أدناه:

<profiles>
    <profile>
        <id>osx_profile</id>
        <activation>
            <activeByDefault>false</activeByDefault>
            <os>
                <family>mac</family>
            </os>
        </activation>
        <properties>
            <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
        </properties>
        <dependencies>
            <dependency>
                <groupId>com.sun</groupId>
                <artifactId>tools</artifactId>
                <version>1.6.0</version>
                <scope>system</scope>
                <systemPath>${toolsjar}</systemPath>
            </dependency>
        </dependencies>
    </profile>
</profiles>




tools.jar