سؤال

لقد كتبت تطبيقًا يستخدم مكتبة طرف ثالث. لقد قمت بعد ذلك بتعبئة هذا كجرة قابلة للتنفيذ باستخدام Maven-Assembly-Plugin (إنتاج جرة مع جميع التبعيات بما في ذلك بعض الجرار الطرف الثالث).

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

هل كانت مفيدة؟

المحلول

يجب عليك بناء جرة ، هذه عبارة عن حزمة OSGI: لذلك تحتوي على البيان المطلوب. mf مع معرف الإضافات ورقم إصدار (هذا لا يغير الحقيقة ، أن الجرة تظل قابلة للتنفيذ). احرص على إضافة خيار حزم التصدير لجعل الرمز متاحًا للمكونات/الحزم الأخرى أيضًا.

بعد ذلك ، يمكنك تثبيت هذه الجرة في النظام الأساسي المستهدف الذي يستخدمه مشروع PDE (ابحث عن النظام الأساسي المستهدف في التفضيلات) ، لذلك يصبح متاحًا للمكونات الإضافية الأخرى بواسطة المعرف (يمكنك إضافته كاعتماد).

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

نصائح أخرى

أعتقد أنه من مجرد ممارسة سيئة للغاية لتشمل الجرار الأخرى في جرة الخاص بك. ولكن إذا كنت ترغب في الاحتفاظ بها بهذه الطريقة ، فماذا عن إنشاء اثنين من المباني من بناء واحد: واحدة كاملة مع التبعيات ، وذات بسيطة لاستخدامها في PDE (فقط استخدم عمليات إعدام متعددة في البرنامج المساعد التجميع)

أنا الآن أستخدم Maven-Bundle-Plugin:

      <plugin>
          <groupId>org.apache.felix</groupId>
          <artifactId>maven-bundle-plugin</artifactId>
          <version>1.4.0</version>
          <extensions>true</extensions>
          <configuration>
              <instructions>
                  <Bundle-SymbolicName>${pom.groupId}.${pom.artifactId}</Bundle-SymbolicName>
                  <Bundle-Name>${pom.name}</Bundle-Name>
                  <Bundle-Version>${pom.version}</Bundle-Version>
                  <Bundle-Activator>org.wso2.mbp.sample01.Activator</Bundle-Activator>
                  <Private-Package>org.wso2.mbp.sample01</Private-Package>
              </instructions>
          </configuration>
      </plugin> 

http://felix.apache.org/site/apache-felix-maven-bundle-plugin-bnd.html

لبناء حزمة. ولكن كيف يمكنني استخدام المكون الإضافي للحزمة بحيث ينشئ ملفًا واضحًا لبناء الجرة مع maven-assembly-plugin ، والذي أستخدمه مثل:

    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
      <appendAssemblyId>true</appendAssemblyId>
      <finalName>myApp</finalName>

      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>         
      <archive>
        <manifest>
          <mainClass>com.TestMain</mainClass>                     
          <packageName>com.</packageName>
        </manifest>
      </archive>    
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id>
        <phase>package</phase>
        <goals>
          <goal>assembly</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top