2016-01-11 5 views
0

У меня есть многомодульная сборка 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 строит все модули.)

ответ

0

даже тогда, когда я строю родителей с MVN установить -pl org.acme.project я получаю следующее исключение:

вы пробовали предваряя проект целевой платформы к списку -pl аргументов: mvn install -pl :mars,org.acme.project

Я использую это все время.

+0

Примечание для следующего человека: вам нужно утомительно собрать все зависимости и добавить их в аргументы. В приведенном выше примере, где я только хотел запустить тесты интеграции, аргументы будут выглядеть так: 'mvn install -pl org.acme.project.target, org.acme.project, org.acme.it'. –

+0

Да, теоретически нужно иметь возможность использовать параметр '-am' (« также сделать ») в сочетании с' -pl, чтобы автоматически добавлять зависимости проектов. К сожалению, [Bug 494760] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=494760) и, возможно, другие препятствуют этому в данный момент. –