निर्माण मैं Maven टाइको प्लगइन का उपयोग कर के साथ बनाता है कि एक ग्रहण आरसीपी आवेदन राशि परियोजना के अन्य प्लग-इन करने के लिए निर्भरता हल नहीं किया जा सकता है। एक मास्टर पीओएम है जिसमें मॉड्यूल के रूप में सभी प्लगइन्स और फीचर्स शामिल हैं।टाइको: जब प्लगइन्स अलग
यदि मैं मास्टर पीओएम मेवेन के साथ स्थापित करता हूं, परिणामी रिएक्टर बिल्ड ठीक काम करता है। सभी मॉड्यूल का निर्माण कर रहे हैं और स्थापना सफल होता है।
हालांकि, अगर मैं आवेदन की अन्य प्लग-इन करने के लिए ग्रहण प्लगइन्स से एक अलग से, अपने निर्भरता निर्माण हल नहीं किया जा सकता है।
तीसरे पक्ष के पुस्तकालयों (जैसे ग्रहण मंच) के लिए निर्भरता काम ठीक लगते हैं। हमारे आवेदन के ग्रहण प्लगइन्स केवल उस प्रकार की निर्भरताओं के साथ सफलतापूर्वक निर्माण करते हैं।
सांत्वना उत्पादन निम्नलिखित है: सफल रिएक्टर निर्माण के कारण
[INFO] Resolving dependencies of MavenProject: com.mycompany.myproduct:com.mycompany.myproduct.gui.editors:1.8.15-SNAPSHOT @ /<path>/com.mycompany.myproduct.gui.editors/pom.xml
[INFO] Cannot complete the request. Generating details.
[INFO] Cannot complete the request. Generating details.
[INFO] {osgi.ws=gtk, osgi.os=linux, osgi.arch=x86, org.eclipse.update.install.features=true}
[ERROR] Cannot resolve project dependencies:
[ERROR] Software being installed: com.mycompany.myproduct.gui.editors 1.8.15.qualifier
[ERROR] Missing requirement: com.mycompany.myproduct.gui.editors 1.8.15.qualifier requires 'bundle com.mycompany.myproduct.preferences 1.8.15' but it could not be found
[ERROR]
[ERROR] Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from com.mycompany.myproduct.gui.editors 1.8.15.qualifier to bundle com.mycompany.myproduct.preferences 1.8.15.", "Unable to satisfy dependency from com.mycompany.myproduct.gui.editors 1.8.15.qualifier to bundle com.mycompany.myproduct.gui.utils 1.8.15.", "No solution found because the problem is unsatisfiable."] -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from com.mycompany.myproduct.gui.editors 1.8.15.qualifier to bundle com.mycompany.myproduct.preferences 1.8.15.", "Unable to satisfy dependency from com.mycompany.myproduct.gui.editors 1.8.15.qualifier to bundle com.mycompany.myproduct.gui.utils 1.8.15.", "No solution found because the problem is unsatisfiable."]
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
...
, सभी प्लगइन बनाता है हमारी कंपनी भंडार (हम Artifactory का उपयोग करें) में हैं। आर्टिफैक्टरी वेब ऐप में मैं स्पष्ट रूप से preferences
प्लगइन का एक 1.8.15-SNAPSHOT निर्माण देखता हूं। हालांकि इस भंडार को एक्सेस नहीं किया जा रहा है।
भंडार जानकारी settings.xml
फ़ाइल में निर्दिष्ट किया गया है। नोट माता पिता पोम सफलतापूर्वक कि भंडार से लिया गया है:
[INFO] Scanning for projects...
Downloading: http://artifactory.buildnet.mycompany.com/artifactory/libs-snapshot-local/com/mycompany/myproduct/gui.parent/1.0-SNAPSHOT/maven-metadata.xml
Downloaded: http://artifactory.buildnet.mycompany.com/artifactory/libs-snapshot-local/com/mycompany/myproduct/gui.parent/1.0-SNAPSHOT/maven-metadata.xml (594 B at 3.3 KB/sec)
सेटिंग्स फ़ाइल की सामग्री है:
<settings>
<servers>
... (only relevant for deploy)
</servers>
<mirrors>
<mirror>
<id>mycompany-remote-mirror</id>
<name>mycompany remote repositories mirror</name>
<url>http://artifactory.buildnet.mycompany.com/artifactory/remote-repos</url>
<mirrorOf>*,!eclipse*,!mycompany-snapshots,!mycompany-releases</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>mycompany-default</id>
<repositories>
<repository>
<id>mycompany-snapshots</id>
<name>MyCompany snapshots repository</name>
<releases>
<enabled>false</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<url>http://artifactory.buildnet.mycompany.com/artifactory/libs-snapshot-local</url>
<layout>default</layout>
</repository>
<repository>
<id>mycompany-releases</id>
<name>MyCompany releases repository</name>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>warn</checksumPolicy>
</releases>
<snapshots>
<enabled>false</enabled>
<updatePolicy>never</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
<url>http://artifactory.buildnet.mycompany.com/artifactory/libs-release-local</url>
<layout>default</layout>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>mycompany-default</activeProfile>
</activeProfiles>
</settings>
यह माता पिता पोम (ध्यान दें कि हमारी परियोजना में यह मास्टर से अलग किया जाता है पोम कि मॉड्यूल शामिल हैं):
इस प्रकार<project ...>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.myproduct</groupId>
<artifactId>gui.parent</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<product-id>MyProduct</product-id>
<tycho.version>0.17.0</tycho.version>
<tycho-extras.version>0.17.0</tycho-extras.version>
<eclipse.version>juno</eclipse.version>
<eclipse.repo>http://download.eclipse.org/releases/${eclipse-version}</eclipse.repo>
</properties>
<distributionManagement>
...
</distributionManagement>
<repositories>
<repository>
<id>eclipse</id>
<url>${eclipse.repo}</url>
<layout>p2</layout>
</repository>
</repositories>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-source-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-versions-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
</plugin>
</plugins>
<pluginManagement>
<plugins>
<!-- PARENT PLUGINS -->
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.version}</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.version}</version>
<configuration>
...
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-source-plugin</artifactId>
<version>${tycho.version}</version>
...
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-versions-plugin</artifactId>
<version>${tycho.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.4.1</version>
</plugin>
<!-- END OF PARENT PLUGINS -->
<!-- DEFAULT PLUGINS -->
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho.version}</version>
<configuration>
<compilerArguments>
<inlineJSR/>
<enableJavadoc/>
<encoding>ISO-8859-1</encoding>
</compilerArguments>
</configuration>
</plugin>
<!-- END OF DEFAULT PLUGINS -->
<!-- OTHER PLUGINS -->
... (maven-resources, tycho-surefire, tycho-p2, tycho-p2-director,
tycho-p2-repository, ...)
<!-- END OF OTHER PLUGINS -->
</plugins>
</pluginManagement>
</build>
</project>
दूसरों पर निर्भरता के साथ एक प्लगइन का pom.xml है के रूप में:
<project ...>
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.mycompany.myproduct</groupId>
<artifactId>gui.parent</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>com.mycompany.myproduct.gui.editors</artifactId>
<version>1.8.15-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
और है कि एक ही प्लगइन का MANIFEST.MF फ़ाइल इस प्रकार है:
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: MyProduct Editors Plug-in
Bundle-SymbolicName: com.mycompany.myproduct.gui.editors;singleton:=true
Bundle-Version: 1.8.15.qualifier
Bundle-Activator: com.mycompany.myproduct.gui.editors.Activator
Bundle-ActivationPolicy: lazy
Export-Package: com.mycompany.myproduct.gui.editors,
com.mycompany.myproduct.gui.editors.logger,
com.mycompany.myproduct.gui.editors.report
Bundle-Vendor: MyCompany
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Require-Bundle: org.eclipse.ui.workbench;bundle-version="3.104.0",
org.eclipse.core.runtime;bundle-version="3.8.0",
org.eclipse.jface;bundle-version="3.8.0",
com.mycompany.myproduct.preferences;bundle-version="1.8.15",
com.mycompany.myproduct.gui.utils;bundle-version="1.8.15",
org.eclipse.ui.workbench;bundle-version="3.104.0"
अफसोस की बात है, यह सही जवाब प्रतीत होता है। कोई विचार क्यों टाइपो मेरे स्थानीय मेवेन रेपो (जो कि पी 2 नहीं है) में कलाकृतियों को ढूंढ सकता है, लेकिन कंपनी मेवेन रिपोजिटरी पर नहीं? – tbacker
टाइको आदेश अन्य स्थानीय रूप से निर्मित कलाकृतियों के खिलाफ निर्माण के उपयोग के मामले का समर्थन करने के [इस के लिए स्पष्ट समर्थन] (http://wiki.eclipse.org/Tycho/Target_Platform#Locally_built_artifacts) है। रिमोट रिपॉजिटरीज़ के लिए वही होता था, लेकिन यह [स्वाभाविक रूप से स्केल नहीं करता] (https://issues.sonatype.org/browse/TYCHO-335)। – oberlies
हम वास्तव में नेक्सस मैवेन रिपोजिटरी का उपयोग करके यह स्वचालित रूप से काम कर रहे हैं। डिफ़ॉल्ट Maven भंडार जो हम भी p2 लेआउट में उसकी सामग्री (यूआरएल खजाने/MyProduct/.meta/p2 पर) प्रस्तुत करता है (यूआरएल खजाने/MyProduct पर उदा) हमारे टाइको निर्मित कलाकृतियों को तैनात करने की। हमारी परियोजना की रिपोजिटरी सूची में दोनों यूआरएल जोड़कर, यह बॉक्स से बाहर काम करता प्रतीत होता है! तैनात निर्भरताओं को स्थानीय भंडार '.2/रिपोजिटरी/पी 2/ओजीआई/बंडल' के भीतर एक अलग निर्देशिका में हल और डाउनलोड किया जाता है। – tbacker