У меня есть многомодульная сборка Tycho с файлом определения цели. Мишень определение определяется его собственный проект (ID: org.acme.project.target
, типа упаковки: pom
), как это:Как создать дочерние модули в Tycho
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.3</version>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>platform_rcp.target</file>
<type>target</type>
<classifier>platform_rcp</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
И родитель Maven относится к этой целевой платформе, как это:
<plugin>
<groupId>org.eclipse.tycho</groupId>
<artifactId>target-platform-configuration</artifactId>
<configuration>
<resolver>p2</resolver>
<target>
<artifact>
<groupId>${project.groupId}</groupId>
<artifactId>org.acme.project.target</artifactId>
<version>${project.version}</version>
<classifier>platform_rcp</classifier>
</artifact>
</target>
</configuration>
</plugin>
Эта настройка работает до тех пор, пока я создаю родительский проект. Когда я построить одну из дочерних модулей, даже если этот проект дублирует ссылку на целевую платформу или даже тогда, когда я строю родителей с mvn install -pl org.acme.project
я получаю следующее исключение:
[ERROR] Internal error: java.lang.RuntimeException: Could not resolve target platform specification artifact myGroup:org.acme.project.target:target:platform_rcp:2.3.0-SNAPSHOT -> [Help 1]
org.apache.maven.InternalErrorException: Internal error: java.lang.RuntimeException: Could not resolve target platform specification artifact myGroup:org.acme.project.target:target:platform_rcp:2.3.0-SNAPSHOT
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:121)
at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
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)
the Tycho example Даже не работает для меня , но приносит то же сообщение об ошибке (Could not resolve target platform specification artifact example.group:mars:target:1.0.0-SNAPSHOT
).
Я думал, что this question был похож, но моя настройка - именно то, что, как говорят, работает в ответ.
Что я сделал не так?
(актуальная проблема в вопросе that Eclipse Mars can't run integration tests, так что я могу использовать только Tycho запустить их, что требует длительного времени, когда Tycho строит все модули.)
Примечание для следующего человека: вам нужно утомительно собрать все зависимости и добавить их в аргументы. В приведенном выше примере, где я только хотел запустить тесты интеграции, аргументы будут выглядеть так: 'mvn install -pl org.acme.project.target, org.acme.project, org.acme.it'. –
Да, теоретически нужно иметь возможность использовать параметр '-am' (« также сделать ») в сочетании с' -pl, чтобы автоматически добавлять зависимости проектов. К сожалению, [Bug 494760] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=494760) и, возможно, другие препятствуют этому в данный момент. –