Devo creare un plug-in Eclipse con un Maven/Tycho che abbia dipendenze da altre terze parti. Incorporino dipendenze non è ancora supportato da Tycho, ho diviso progetti in due come segue:Tycho: "Impossibile soddisfare la dipendenza ..." durante la creazione di un genitore multi-modulo
A-thirdparty
: progetto con un packaging 'fascio', costruito da Maven-fascio-plug, aventi 'Embed- dipendenza' istruzione, e l'esportazione di tutti i pacchetti che sono richiesti da un plugin 'a'A
: progetto con un packaging 'eclipse-plugin', utilizzando Tycho-maven-plugin, e target dalla piattaforma di Tycho plug-in di configurazione conpomDependencies
impostato suconsider
.
Quando li costruisco separatamente (inizialmente, aggregatore di terze parti, quindi progetto A stesso), tutto funziona correttamente. Tuttavia, se aggregare entrambi i progetti (utilizzando multi-modulo POM), ottengo il seguente Maven ERRORE:
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.", ...
Perché i progetti di costruzione in modo aggregato causa questo errore, e che tipo di soluzione potrebbe essere possibile se quello è un bug di Tycho?
Tuttavia, non vi è alcun errore se lascio solo un modulo in POM di aggregazione (indipendentemente quale).
EDIT
non può riprodurre con un piccolo, campione di multi-modulo simile. Il che significa che c'è qualcosa nella mia gerarchia POM.
EDIT2
era in grado di riprodurre con un piccolo campione di multi-modulo simile, dopo compresa stesso insieme di dipendenze (coppia di librerie axis2 & axiom).
Edit3: Minimalistic Esempio
Ora mi chiedo se il problema è di perdere tutti i terzi si crea richiesti dal librerie di terze parti sono inclusi. Se è così, allora perché sono in grado di creare con successo quando eseguo entrambi i moduli separatamente, e la compilazione fallisce solo quando viene eseguita tramite padre, multi-module pom.xml? L'esempio di seguito include solo un JAR a singolo asse 2-kernel, raggruppato in un artefatto primo pomer denominato primo-terzo componente.
Invece di A
, l'esempio dispone di keywoard first
. La struttura della cartella è la seguente:
./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
Root 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 di first-thirdparty
. Incorpora semplicemente JAR del kernel di asse2 (non ci sono altre librerie ...):
<?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 di first
, che è un eclisse-plugin, e dipende 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 del modulo first
; importa esplicitamente tutti i pacchetti di axis2-kernel:
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
sarebbe utile per mostrarci il vostro pom.xml maestro così come quello che si comanda' invocando Maven con. – SpellingD
@SpellingD Ok, inserirò l'esempio del codice, dato che sono riuscito a minimizzare il codice. –
@SpellingD Non c'è molto codice, ma sto considerando di spostarlo in un archivio di condivisione. Se puoi suggerirne uno, per favore fallo. Mi chiedo ora, se il problema relativo alle dipendenze di Axis2 non è incluso, e questo riguarda il processo di compilazione. Tuttavia, sono in grado di creare questi moduli separatamente, quindi mi chiedo cosa c'è di sbagliato nell'aggregarli tramite genitore multi-modulo. –