2016-11-10 3 views
0

У меня есть проект плагина, который я пытаюсь создать для тестового плагина. Пакеты в моем проекте плагина доступны для других плагинов в моей рабочей области, включая тестовый плагин, но когда я пытаюсь строить свои проекты с помощью tycho, тестовый плагин выдает ошибку, в которой говорится, что импорт не может быть разрешен.Импорт не может быть разрешен фрагментом тестового плагина с использованием Tycho, но работает в Eclipse

[ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:0.25.0:compile (default-compile) on project REDACTED.tests: Compilation failure: Compilation failure: 
[ERROR] REDACTED/PlanImportTest.java:[7] 
[ERROR] import REDACTED.pluginname.Argument; 
[ERROR] ^^^^^^^^^^^^ 
[ERROR] The import REDACTED.pluginname cannot be resolved 

Я новичок в Тайко, так что я думаю, что, вероятно, проблема с моей макет проекта, но я не могу найти решение моей проблемы в Интернете. Кто-нибудь знает, почему этот импорт работает в eclipse, но не при запуске сборки maven/tycho в командной строке? Соответствующие файлы ниже.

Плагин манифеста:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: REDACTED.pluginname 
Bundle-SymbolicName: REDACTED.pluginname;singleton:=true 
Bundle-Version: 1.0.0.qualifier 
Export-Package: REDACTED 
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 
Eclipse-BuddyPolicy: registered 
Eclipse-RegisterBuddy: REDACTED 

Плагин POM:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>REDACTED</groupId> 
     <artifactId>REDACTED</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>REDACTED</relativePath> 
    </parent> 
    <groupId>REDACTED</groupId> 
    <artifactId>REDACTED.pluginname</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>eclipse-plugin</packaging> 
</project> 

Тест класс

import static org.junit.Assert.*; 
import org.junit.Test; 
import REDACTED.pluginname.Argument; 

public class PlanImportTest { 

    @Test 
    public void test() { 
     Argument a = null; 
     assertTrue(true); 
    } 
} 

испытания манифеста проекта:

Manifest-Version: 1.0 
Bundle-ManifestVersion: 2 
Bundle-Name: REDACTED 
Bundle-SymbolicName: REDACTED.tests 
Bundle-Version: 1.0.0.qualifier 
Bundle-Vendor: REDACTED 
Fragment-Host: REDACTED.pluginname;bundle-version="1.0.0.qualifier" 
Bundle-RequiredExecutionEnvironment: JavaSE-1.8 
Require-Bundle: org.junit;bundle-version="4.12.0" 

испытания проекта POM:

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>REDACTED</groupId> 
     <artifactId>REDACTED</artifactId> 
     <version>1.0.0-SNAPSHOT</version> 
     <relativePath>REDACTED</relativePath> 
    </parent> 
    <groupId>REDACTED</groupId> 
    <artifactId>REDACTED.tests</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>eclipse-test-plugin</packaging> 
    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.eclipse.tycho</groupId> 
       <artifactId>tycho-surefire-plugin</artifactId> 
       <configuration> 
        <testClass>REDACTED.Test</testClass> 
        <dependencies> 
         <dependency> 
          <type>eclipse-plugin</type> 
          <groupId>REDACTED</groupId> 
          <artifactId>REDACTED.pluginname</artifactId> 
          <version>1.0.0-SNAPSHOT</version> 
         </dependency> 
        </dependencies> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+2

Не нужно явно указывать зависимости в тестовом проекте pom. Вместо этого ваш родительский pom должен отображать оба проекта как «модули». –

+0

Ах, да, я уже это делаю, и модуль плагина теперь загружается успешно. Я удалю этот плагин из pom, это было нечто, что я пробовал в дополнение к другим вещам, чтобы надеяться заставить его работать. –

ответ

0

Оказывается, проблема заключалась в том, что мой плагин для тестирования не правильно экспортировал исходный каталог. Изменение к build.properties файл исправил:

До:

bin.includes = META-INF/,\ 
       src/ 
output.. = bin 

После:

bin.includes = META-INF/,\ 
       src/ 
source.. = src 
output.. = bin 

Так просто, но я получил там в конце концов.

2

, как вы используете фрагмент, дополнительная зависимость от хозяина фрагмента в pom.xml не должно быть необходимости.

Одна вещь, которая кажется неполной в вашем вопросе для меня, - это использование загрузки приятелей. В случае, если классы, которые вы компилируете, фактически предоставляются собеседником тестируемого пакета (а не самим пакетом), вам может потребоваться добавить дополнительное дополнение к приятелю (-ям), см. https://eclipse.org/tycho/sitedocs/tycho-surefire/tycho-surefire-plugin/test-mojo.html#dependencies

Для целей отладки , вы можете использовать опцию командной строки maven -X, которая будет выгружать пакеты, которые были рассчитаны для включения в тестовую среду выполнения. Таким образом, вы можете определить, нет ли пучка.

+0

Означает ли это, что мне также нужно добавить приятеля тестируемого плагина в список модулей, построенных реактором pom? –

+0

Я удалил собеседника из тестируемого плагина, чтобы проверить, могу ли я изолировать проблему, но я все еще получаю ту же ошибку, что и раньше. Я также удалил фрагмент из тестового плагина pom. Для mvn -X следует ли искать в пути к классам? Если это так, что показывает мой проект: [DEBUG] Выходной каталог: REDACTED.tests/target/classes [DEBUG] Путь к классу: [DEBUG] REDACTED.tests/target/classes ** [DEBUG] REDACTED.pluginname /. ** [DEBUG] /home/developer/.m2/repository/.cache/tycho/org.junit-4.12.0.v201504281640.jar ... –

Смежные вопросы