1

У меня возникла очень странная проблема с компилятором Maven и Eclipse.Возможная ошибка в Maven + plexus + компилятор eclipse на корпусах, чувствительных к регистру?

В Eclipse + m2eclipse у меня нет проблем с составлением небольшого проекта (быстрый старт архетипа) со следующим единственным классом.

package test.test; 
import com.Ostermiller.util.CSVParser; 
public class TestCaseSensitive { 
    CSVParser csvParser; 
} 

Ostermiller utils добавлен в pom.xml. Проект Eclipse Kepler компилирует проект. Далее, mvn compile работает из коробки.

Теперь я перейду к компилятору 3.1 и запрошу компилятор Eclipse (чтобы иметь возможность обрабатывать такие же проблемы компиляции в режиме консоли, а также в режиме IDE). Это POM:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
<modelVersion>4.0.0</modelVersion> 

<groupId>test</groupId> 
<artifactId>test</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>jar</packaging> 

<name>test</name> 
<url>http://maven.apache.org</url> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.ostermiller</groupId> 
     <artifactId>utils</artifactId> 
     <version>1.07.00</version> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>3.1</version> 
      <configuration> 
       <compilerId>eclipse</compilerId> 
       <source>1.7</source> 
       <target>1.7</target> 
       <optimize>true</optimize> 
       <showWarnings>true</showWarnings> 
       <showDeprecation>true</showDeprecation> 
       <fork>false</fork> 
       <compilerArgument>-err:nullAnnot,null</compilerArgument> 
      </configuration> 
      <dependencies> 
       <dependency> 
        <groupId>org.codehaus.plexus</groupId> 
        <artifactId>plexus-compiler-eclipse</artifactId> 
        <version>2.2</version> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
</build> 

И вот результат:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project test: Compilation failure: Compilation failure: 
[ERROR] /home/me/workspaces/4/3/ws/test/src/main/java/test/test/TestCaseSensitive.java:[3] The import com.Ostermiller cannot be resolved 
[ERROR] /home/me/workspaces/4/3/ws/test/src/main/java/test/test/TestCaseSensitive.java:[7] CSVParser cannot be resolved to a type 

Пакет com.Ostermiller существует (он компилирует в Maven компилятор по умолчанию, а также в Eclipse IDE), но не после переключения на компилятор eclipse.

Пожалуйста, обратите внимание, что сообщенная путь ошибок тоже неправильно:

[ERROR] /home/me/workspaces/4/3/ws/test/src/main/java/... 

должен быть

[ERROR] /home/me/workspaces/4.3/ws/test/src/main/java/... 

Имеет кто-то идея? Где будет сообщена потенциальная ошибка?

+0

У меня та же проблема, кроме моей ошибки: 'ввозных орг .xbill.DNS не может быть разрешено'. Это определенно на пути к классам, как я могу видеть с помощью 'mvn -X'. Единственное, что я мог видеть, это то, что оба наших импорта имеют заглавные буквы в названии пакета. Возможно, у этого есть проблемы с этим. – onlynone

+0

Существует также этот вопрос: http://stackoverflow.com/questions/17749375, где у айзера возникают проблемы с 'org.omg.CORBA.IntHolder'. Я думаю, что верхний регистр связан. – onlynone

ответ

1

Вы пытались использовать компилятор jdt, предоставляемый tycho?

См http://wiki.eclipse.org/Tycho/FAQ#Can_I_use_the_Tycho_compiler_support_in_non-OSGi_projects.2C_too.3F

Что бы дать вам:

<plugin> 
    <!-- Use compiler plugin with tycho as the adapter to the JDT compiler. --> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
    <compilerId>jdt</compilerId> 
    <source>1.7</source> 
    <target>1.7</target> 
    <optimize>true</optimize> 
    <showWarnings>true</showWarnings> 
    <showDeprecation>true</showDeprecation> 
    <fork>false</fork> 
    <compilerArgument>-err:nullAnnot,null</compilerArgument> 
    </configuration> 
    <dependencies> 
    <!-- This dependency provides the implementation of compiler "jdt": --> 
    <dependency> 
     <groupId>org.eclipse.tycho</groupId> 
     <artifactId>tycho-compiler-jdt</artifactId> 
     <version>${tycho-version}</version> 
    </dependency> 
    </dependencies> 
</plugin> 

В настоящее время Tycho-версия = 0.18.0

+0

Да, но есть несовместимости с maven-compiler-plugin (Maven 3.1, Tycho 0.18.0). Я также пробовал все версии tycho от 18 до 14 (у меня больше нет stacktrace). Maven жалуется на метод, который не реализован методом tycho: API отсутствует. Очевидно, что ошибки и предупреждение передаются из Tycho в Maven. – Sebastien

+0

tycho 0.18.1, совместимый с maven 3.1.0, теперь доступен –