Muszę zbudować plugin Eclipse z Maven/Tycho, który ma zależności od innych stron trzecich. Jak osadzanie zależności nie jest jeszcze obsługiwany przez Tycho, ja podzielić na dwa projekty, jak następuje:Tycho: "Nie można zaspokoić zależności ..." podczas budowania za pomocą wielomodułowego rodzica
A-thirdparty
: projekt z opakowania „wiązki”, zbudowany przez Maven-bundle-plugin, mających „Embed- Zależność instrukcja i eksportu wszystkich pakietów, które są wymagane przez wtyczkę 'a'A
: projekt z opakowania 'eclipse-plugin', używając Tycho-maven-plugin i Tycho docelowego od platformy wtyczka konfiguracji zpomDependencies
ustawiona naconsider
.
Kiedy buduję je osobno (najpierw agregator trzeciej strony, potem sam projekt A), wszystko działa dobrze. Jednakże, jeśli zsumować oba te projekty (używając wielomodułowego POM), pojawia się następujący Maven błąd:
Caused by: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from A 1.0.0.qualifier to package org.apache.axis2.transaction 0.0.0.", "Unable to satisfy dependency from A 1.0.0.qualifier to package org.apache.axis2.addressing.i18n 0.0.0.", ...
Dlaczego projektów budowlanych w zagregowanym moda powoduje ten błąd, i jakiego rodzaju obejście mogłoby być możliwe, jeśli to jest błąd Tycho?
Chociaż nie ma błędu, jeśli zostawiam tylko jeden moduł agregacji POM (niezależnie od tego, który).
EDIT
nie można odtworzyć z małym, podobnym próbki wielomodułowego. Co oznacza, że jest coś w mojej hierarchii POM.
EDIT2
była w stanie odtworzyć z małym, podobnym próbki wielomodułowego po tym sam zestaw zależnościami (kilka bibliotekami oś2 & aksjomatów).
Edit3: Minimalistic Przykład
Teraz zastanawiam się, czy problem jest o brakującym wszystkie thirdparties wymaganych przez thirdparty bibliotek ja zawartych. Jeśli tak, to dlaczego jestem w stanie budować pomyślnie, gdy oba moduły są uruchamiane osobno, a kompilacja kończy się niepowodzeniem tylko wtedy, gdy jest wykonywana przez nadrzędny, wielomodułowy pom.xml? Poniższy przykład zawiera tylko jeden pojedynczy JAR osi J2, zawarty w pom-pierwszym artefakcie o nazwie pierwsza trzecia strona.
Zamiast A
, przykład ma keywoard first
. Struktura folder jest następujący:
./pom.xml
./first-thirdparty
pom.xml
./first
src/main/java/org/mydemo/Test.java // has just one method that simply returns AxisFault.class.getSimpleName(); to test import resolution
META-INF/MANIFEST.MF
build.properties
pom.xml
głównej POM:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.mydemo</groupId>
<artifactId>first-aggregator</artifactId>
<packaging>pom</packaging>
<version>1.0.0-SNAPSHOT</version>
<modules>
<module>first-thirdparty</module>
<module>first</module>
</modules>
</project>
POM od first-thirdparty
. Po prostu osadza JAR osi2-jądra (żadnych innych bibliotek).)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.mydemo</groupId>
<artifactId>first-aggregator</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<properties>
<manifest-location>META-INF</manifest-location>
</properties>
<packaging>bundle</packaging>
<groupId>org.mydemo</groupId>
<artifactId>first-thirdparty</artifactId>
<version>1.0.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>org.apache.axis2</groupId>
<artifactId>axis2-kernel</artifactId>
<version>1.5.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<instructions>
<Embed-Dependency>
axis2-kernel
</Embed-Dependency>
<_exportcontents>
org.apache.axis2.*;version="1.5.1"
</_exportcontents>
<Bundle-ClassPath>{maven-dependencies}</Bundle-ClassPath>
<Embed-Transitive>true</Embed-Transitive>
<Embed-Directory>jars</Embed-Directory>
<_failok>true</_failok>
<_nouses>true</_nouses>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
</project>
POM od first
, który jest Eclipse wtyczki i zależy first-thirdparty
:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.mydemo</groupId>
<artifactId>first-aggregator</artifactId>
<version>1.0.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<groupId>org.mydemo</groupId>
<artifactId>org.mydemo.first-bundle</artifactId>
<packaging>eclipse-plugin</packaging>
<version>1.0.0-SNAPSHOT</version>
<properties>
<tycho.ver>0.14.1</tycho.ver>
</properties>
<repositories>
<repository>
<id>helios</id>
<layout>p2</layout>
<url>http://download.eclipse.org/releases/indigo</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>org.mydemo</groupId>
<artifactId>first-thirdparty</artifactId>
<version>1.0.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-maven-plugin</artifactId>
<version>${tycho.ver}</version>
<extensions>true</extensions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<version>${tycho.ver}</version>
<configuration>
<pomDependencies>consider</pomDependencies>
</configuration>
</plugin>
</plugins>
</build>
</project>
MANIFEST.MF modułu first
; to wyraźnie importuje wszystkie pakiety oś2-jądra:
Manifest-Version: 1.0
Bundle-Version: 1.0.0.qualifier
Tool: Bnd-0.0.357
Bundle-Name: first-bundle
Bnd-LastModified: 1334819004300
Created-By: 1.6.0_25 (Sun Microsystems Inc.)
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.mydemo.first-bundle
Export-Package: org.mydemo
Import-Package: org.apache.axis2.clustering.context,
org.apache.axis2.modules,
org.apache.axis2.deployment.util,
org.apache.axis2.dataretrieval.client,
org.apache.axis2.clustering,
org.apache.axis2.wsdl.util,
org.apache.axis2.clustering.configuration,
org.apache.axis2.java.security,
org.apache.axis2.deployment.resolver,
org.apache.axis2.util,
org.apache.axis2.wsdl,
org.apache.axis2.addressing.metadata,
org.apache.axis2.i18n,
org.apache.axis2.deployment.scheduler,
org.apache.axis2.dataretrieval,
org.apache.axis2.dispatchers,
org.apache.axis2.transport,org.apache.axis2.service,
org.apache.axis2.deployment.repository.util,
org.apache.axis2.client,
org.apache.axis2.context,
org.apache.axis2.classloader,
org.apache.axis2.receivers,
org.apache.axis2.engine,
org.apache.axis2.addressing,
org.apache.axis2.deployment,
org.apache.axis2.transport.http,
org.apache.axis2.phaseresolver,
org.apache.axis2.context.externalize,
org.apache.axis2.transaction,
org.apache.axis2.description,
org.apache.axis2.addressing.wsdl,
org.apache.axis2.transport.http.util,
org.apache.axis2.util.threadpool,
org.apache.axis2,
org.apache.axis2.handlers,
org.apache.axis2.addressing.i18n,
org.apache.axis2.builder,
org.apache.axis2.description.java2wsdl,
org.apache.axis2.builder.unknowncontent,
org.apache.axis2.namespace,
org.apache.axis2.description.java2wsdl.bytecode,
org.apache.axis2.client.async,
org.osgi.framework;version="1.3.0"
Bundle-Localization: plugin
To pomaga nam pokazać swój główny pom.xml jak co nakazuje ci” ponownie wywołuje Mavena z. – SpellingD
@SpellingD Ok, wstawię próbkę kodu, ponieważ udało mi się zminimalizować kod. –
@SpellingD Nie ma zbyt wiele kodu, ale rozważam przeniesienie go do niektórych pamięci współużytkowania. Jeśli możesz zaproponować jedną, zrób to. Zastanawiam się teraz, czy problem dotyczący tych zależności Axis2 nie jest uwzględniony, a to wpływa na proces kompilacji. Jednak jestem w stanie zbudować te moduły osobno, więc zastanawiam się, co jest złego w agregowaniu ich za pomocą wielomodułowego rodzica. –