Mavenのビルドプロセスを再構築して、すべてのプロジェクトで共通のプロジェクトを共有するという問題に対処していますが、うまく機能しません。一般的なプロジェクトをMavenと共有する
ここまでに、合計30個のlibsを使用する5つのGUI(RCP E4 with JavaFX)があります。それらは部分的に我々のもの(ソースコード)と第三者(jarファイル)です。すべてのGUIには、独自のMavenビルドプロセスがあります。すべてのGUIには、コンパイルに必要なすべてのlibのコピーを持つ独自のGitがあります。
は今、私はこれらのプロジェクトでは、冗長性を取り除きたい:依存関係は(少数のGUIといくつかの一般的なLIBS)のように見てどのようにあなたのアイデアを与えるために。私が言ったように、すべてのGUIには、必要な共通プロジェクトの独自のGitとそれ自身のコピー(!)があります。私はすでにそれらを分離する共通ライブラリのためのGitを作成しました。今私の問題が来る。今までのこれらの共通プロジェクトには、それぞれ自分で親を指定する必要があるpom.xml
がありました。ここでは例
pom.xml
次のとおりです。
[INFO] Scanning for projects...
[ERROR] Internal error: java.lang.RuntimeException: Could not resolve target platform specification artifact gui.a:gui.a.app.target:target:1.0.0-SNAPSHOT -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: Could not resolve target platform specification artifact gui.a:gui.a.app.target:target:1.0.0-SNAPSHOT
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:168)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:483)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
Caused by: java.lang.RuntimeException: Could not resolve target platform specification artifact gui.a:gui.a.app.target:target:1.0.0-SNAPSHOT
at org.eclipse.tycho.core.resolver.DefaultTargetPlatformConfigurationReader.addTargetArtifact(DefaultTargetPlatformConfigurationReader.java:389)
at org.eclipse.tycho.core.resolver.DefaultTargetPlatformConfigurationReader.setTarget(DefaultTargetPlatformConfigurationReader.java:342)
at org.eclipse.tycho.core.resolver.DefaultTargetPlatformConfigurationReader.getTargetPlatformConfiguration(DefaultTargetPlatformConfigurationReader.java:75)
at org.eclipse.tycho.core.resolver.DefaultTychoResolver.setupProject(DefaultTychoResolver.java:86)
at org.eclipse.tycho.core.maven.TychoMavenLifecycleParticipant.afterProjectsRead(TychoMavenLifecycleParticipant.java:90)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:274)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
... 11 more
[ERROR]
事実から、このエラーの結果、Mavenのが見つけようとしていること:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>gui.a.e4</groupId>
<artifactId>gui.a.e4.app.releng</artifactId>
<relativePath>../gui.a.e4.app.releng/pom.xml</relativePath>
<version>1.0.0-SNAPSHOT</version>
</parent>
<groupId>gui.a.e4</groupId>
<artifactId>common.project.x</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
最初に私はちょうど次のようなエラーが生じたgui.b.e4
へcommon.project.x
を含めることを試みました親であるcommon.project.x
とそれを解決しようとします。この場合、親の親はターゲットプラットフォーム(いくつかのRCP E4固有のもの)を作成する必要があります。この問題を解決する私の最初の試みは、親をpom.xml
から削除することでした。私はcommon.project.x
で親を指定していないときにgui.a.e4
のビルドはそれを文句:
[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR] The project auv.e4:art.util.geo:1.0.0-SNAPSHOT (/home/mhoffmann/apps/workspace_rcp_gui/art.util.geo.bundle/pom.xml) has 1 error
[ERROR] Unknown packaging: eclipse-plugin @ line 8, column 14
[ERROR]
と私はその後pom
他のプロジェクトへのパッケージの種類を変更した場合は、このプロジェクトを見つけることができません。
[ERROR] Cannot resolve project dependencies:
[ERROR] Software being installed: gui.a.e4.application 1.0.0.qualifier
[ERROR] Missing requirement: common.project.y 1.0.0.qualifier requires 'bundle common.project.x 0.0.0' but it could not be found
[ERROR] Cannot satisfy dependency: gui.a.e4.application 1.0.0.qualifier depends on: bundle common.project.y 0.0.0
[ERROR]
ここで
が私たちのGUIのの1を構築するためのMavenのXMLで、それらはすべて
<?xml version="1.0" encoding="UTF-8"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<name>gui.a - releng</name>
<prerequisites>
<maven>3.0</maven>
</prerequisites>
<groupId>gui.a</groupId>
<artifactId>gui.a.app.releng</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
<tycho-version>0.23.1</tycho-version>
<junit-version>4.11</junit-version>
<mockito-version>1.8.4</mockito-version>
<platform-version>4.2</platform-version>
<efx-version>1.0.0</efx-version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<show-eclipse-log>true</show-eclipse-log>
</properties>
<modules>
<module>../gui.a.app</module>
<module>../gui.a.app.feature</module>
<module>../gui.a.app.product</module>
<module>../gui.a.specific.project.a</module>
<module>../gui.a.specific.project.b</module>
<module>../common.project.a</module>
<module>../common.project.b</module>
</modules>
<pluginRepositories>
<pluginRepository>
<id>tycho</id>
<url>http://repository.sonatype.org/content/groups/sonatype-public-grid</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<build>
<!-- build plugins -->
<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>
<target>
<artifact>
<groupId>gui.a</groupId>
<artifactId>gui.a.app.target</artifactId>
<version>1.0.0-SNAPSHOT</version>
</artifact>
</target>
<resolver>p2</resolver>
<pomDependencies>consider</pomDependencies>
<environments>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86</arch>
</environment>
<environment>
<os>win32</os>
<ws>win32</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>linux</os>
<ws>gtk</ws>
<arch>x86_64</arch>
</environment>
<environment>
<os>macosx</os>
<ws>cocoa</ws>
<arch>x86_64</arch>
</environment>
</environments>
</configuration>
</plugin>
</plugins>
<!-- defines the default settings for the used plugins -->
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-compiler-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<encoding>UTF-8</encoding>
<source>1.8</source>
<target>1.8</target>
<extraClasspathElements>
<extraClasspathElement>
<groupId>javafx</groupId>
<artifactId>javafx.mvn</artifactId>
<version>2.2.0-SNAPSHOT</version>
</extraClasspathElement>
</extraClasspathElements>
</configuration>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-source-plugin</artifactId>
<version>${tycho-version}</version>
<executions>
<execution>
<id>plugin-source</id>
<goals>
<goal>plugin-source</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>tycho-packaging-plugin</artifactId>
<version>${tycho-version}</version>
<configuration>
<archive>
<addMavenDescriptor>false</addMavenDescriptor>
</archive>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
<scope>test</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>${mockito-version}</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
(プロジェクトの名前を除いて)同じであるIもドン共通のプロジェクトのPOMがどのように見えるべきか、あるいは何をすべきかを知っていません。私はMavenについて多くの知識を持っていませんが、既存のスクリプトにさらに
common.project
を組み込むだけで十分です:-)。これまでのところ、私はそれを機能させるために何を変えなければならないのか分かりません。私を助けてください、Mavenは私を夢中にさせます。 :-)
私はもちろん、すべてが非常にきれいになるだろうこれは、(達人で)これが可能だったことを知っていませんでした。しかし、pom.xmlはどのように見えますか、特にメインのpom.xmlです。私はGUI x pom.xmlのために、私はちょうどその親の権利として主なものを指定する必要があると思いますか?共通のプロジェクトでも同じことをしてください。 – Westranger
@Westranger 'main' POMには、すべての子孫プロジェクト(および' 'および' 'セクション)によって継承されたすべての宣言が含まれている必要があります。あなたは間違っていた。 ;)すべての 'GUI x'プロジェクトは' gui'を親として持つべきです。 'common'と' gui'だけが 'main'を親として持っています。私は私の答えにいくつかの参照を追加するつもりです。 –
今私はここで親の意味を誤解しているのを見ています。 GUIを構築するときにGUI bが存在しない場合はどうなりますか? GUIをビルドするとき、GUI bをチェックアウトしたくはありません.MavenがGUI bが存在しないというエラー(ちょうど推測)が出るようです。最後に、私はGUIと必要な一般的なプロジェクトをチェックアウトし、それを構築したいだけですが、これはあなたのソリューションでも使えますか? – Westranger