BuildManagementと継続的インテグレーションにはJenkins/Mavenを使用しています。サードパーティライブラリの管理は、セットアップしたNexusサーバーで処理する必要があります。
- 問題のサードパーティライブラリはorg.eclipse.bpmn20.7.0です。
- 私たちが知る限り、このライブラリはリモートのMavenリポジトリでホストされていません
- サードパーティのライブラリを、ホストされているNexusサードパーティのリポジトリにアップロードしました
- Webを指すプロキシNexusリポジトリがいくつかあります(これは機能します)
次に(多分)問題の部分に移ります:
- 私たちのプロジェクトはEclipseプラグインで構成されています
- したがって、Eclipsep2リポジトリにアクセスする必要があります
- サードパーティライブラリへの依存関係は、Manifest.MFで説明されています
- Nexusオープンソースはp2リポジトリをサポートしていません
- したがって、Eclipsep2リポジトリをプロジェクトPOMに追加する必要があります
まず、(おそらく)Jenkinsが使用するMavenのsettings.xmlからの関連設定:
<localRepository>/var/lib/jenkins/local_repo</localRepository>
ローカルのMavenリポジトリがあります。
おそらく重要です:ローカルのMavenリポジトリとNexusはどのように連携しますか?ローカルリポジトリは冗長ですか?Nexusライブラリと競合する可能性はありますか?または、MavenはNexusから依存関係のみをロードし、ローカルリポジトリに保存しますか?Nexusをインストールした後、空にする必要がありますか?
<mirrors>
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8082/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profile>
<id>nexus</id>
<!--Enable snapshots for the built central repo to direct
all requests to nexus via the mirror -->
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
おそらくお分かりのように、今のところデフォルトのネクサス設定を使用しています。次に、関連するプロジェクトのPOMの内容について説明します。
<repositories>
<!--
<repository>
<id>UML2</id>
<layout>p2</layout>
<url>http://download.eclipse.org/modeling/mdt/updates/releases/</url>
</repository>
-->
<repository>
<id>indigo</id>
<layout>p2</layout>
<url>http://download.eclipse.org/releases/indigo</url>
</repository>
</repositories>
p2リポジトリをNexusに組み込んでみましたが、オープンソースバージョンではp2リポジトリを処理できないことがわかりました。したがって、Nexusに加えてリポジトリとして、プロジェクトPOMにそれらを含める必要があります。MDTリポジトリがなくても機能するように見えるため、MDTリポジトリはコメント化されています。
org.eclipse.bpmn2への依存関係は、それを使用する対応するプラグインのmanifest.MFにあります。
Require-Bundle:
org.eclipse.bpmn2;bundle-version="0.7.0";visibility:=reexport
ライブラリはNexusにアップロードされました(GAVパラメータを使用):
- GroupID:org.eclipse
- ArtifactID:org.eclipse.bpmn2
- バージョン:0.7.0.201111021300
- 包装:瓶
重要かもしれません:分類子は空のままでした。ここに何を入力する必要がありますか?
JenkinsジョブとMavenを-e-Xで開始すると、出力は次のようになります。
[DEBUG] P2resolver.addMavenProject de.some.tool:pom:2.0
[INFO] Adding repository (cached) http://download.eclipse.org/releases/indigo
[DEBUG] Added p2 repository indigo (http://download.eclipse.org/releases/indigo)
[INFO] Cannot complete the request. Generating details.
[INFO] Cannot complete the request. Generating details.
[INFO] {org.osgi.framework.executionenvironment=OSGi/Minimum-1.0,OSGi/Minimum-1.1, osgi.ws=gtk, osgi.arch=x86, osgi.os=linux, org.eclipse.update.install.features=true, org.osgi.framework.system.packages=}
[ERROR] Cannot resolve project dependencies:
[ERROR] Software being installed: de.modeltype.bpmn2 1.0.0.qualifier
[ERROR] Missing requirement: de.modeltype.bpmn2 1.0.0.qualifier requires 'bundle org.eclipse.bpmn2 0.7.0' but it could not be found
[ERROR]
mavenExecutionResult exceptions not empty
message : Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from de.modeltype.bpmn2 1.0.0.qualifier to bundle org.eclipse.bpmn2 0.7.0.", "No solution found because the problem is unsatisfiable."]
cause : "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from de.modeltype.bpmn2 1.0.0.qualifier to bundle org.eclipse.bpmn2 0.7.0.", "No solution found because the problem is unsatisfiable."]
Stack trace :
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from de.modeltype.bpmn2 1.0.0.qualifier to bundle org.eclipse.bpmn2 0.7.0.", "No solution found because the problem is unsatisfiable."]
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
at org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)
at org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:104)
at hudson.maven.Maven3Builder.call(Maven3Builder.java:70)
at hudson.remoting.UserRequest.perform(UserRequest.java:118)
at hudson.remoting.UserRequest.perform(UserRequest.java:48)
at hudson.remoting.Request$2.run(Request.java:287)
at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.RuntimeException: "No solution found because the problem is unsatisfiable.": ["Unable to satisfy dependency from de.modeltype.bpmn2 1.0.0.qualifier to bundle org.eclipse.bpmn2 0.7.0.", "No solution found because the problem is unsatisfiable."]
at org.eclipse.tycho.p2.impl.resolver.ProjectorResolutionStrategy.resolve(ProjectorResolutionStrategy.java:106)
at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:102)
at org.eclipse.tycho.p2.impl.resolver.P2ResolverImpl.resolveProject(P2ResolverImpl.java:69)
at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.doResolvePlatform(P2TargetPlatformResolver.java:342)
at org.eclipse.tycho.p2.resolver.P2TargetPlatformResolver.resolvePlatform(P2TargetPlatformResolver.java:162)
at org.eclipse.tycho.core.resolver.DefaultTychoDependencyResolver.resolveProject(DefaultTychoDependencyResolver.java:85)
at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:91)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:273)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
... 19 more
channel stopped
Finished: FAILURE
何が間違っているのですか?