У меня есть проект GWT на основе maven, который включает Guava . У меня возникли проблемы с Maven, пытающимся (и безуспешно) скомпилировать исходники, которые он находит в guava-gwt * .jar
:
could not parse error message: symbol: static setCountImpl
location: class
/home/mark/.m2/repository/com/google/guava/guava-gwt/11.0.1/guava-gwt-11.0.1.jar(com/google/common/collect/AbstractMultiset.java):100: error: cannot find symbol
return setCountImpl(this, element, count);
^
Я не могу понять, почему Maven считает, что ему нужно скомпилировать источники в guava-gwt
. Вот как выглядит мой проект:
├── pom.xml
└── src
├── main
│ └── java
└── test
└── java
└── SomeTestFile.java
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.Multimap;
import org.junit.Test;
public class SomeTestFile {
@Test
public void testMethod() {
Multimap someMap = ArrayListMultimap.create();
someMap.put(5, "five");
System.out.println(someMap);
}
}
4.0.0
guava-problem
guava-problem
1.0
com.google.guava
guava
11.0.1
com.google.guava
guava-gwt
11.0.1
junit
junit
4.8.2
org.apache.maven.plugins
maven-compiler-plugin
1.6
Я уже пробовал следующее:
guava
(оставив только guava- gwt
) guava-gwt
до при условии
Я не знаю, что еще попробовать. guava-gwt
включает исходный код, потому что GWT скомпилирует его в эквивалентный Javascript. Но я не хочу, чтобы Maven пыталась скомпилировать эти исходники.
Просто примечание ... сами тестовые файлы не нуждаются в guava-gwt
вместо guava
, поскольку они компилируются и запускаются как код Java (они не проходите этап компиляции GWT). Мне не нужен guava-gwt
специально для этих тестов, но он должен быть доступен для моего фактического клиентского кода GWT.
mark@mark-peters:~/devel/guava-problem$ mvn -V clean test-compile
Apache Maven 2.2.1 (rdebian-1)
Java version: 1.7.0
Java home: /usr/lib/jvm/jdk1.7.0/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux" version: "2.6.32-38-generic" arch: "amd64" Family: "unix"
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Unnamed - guava-problem:guava-problem:jar:1.0
[INFO] task-segment: [clean, test-compile]
[INFO] ------------------------------------------------------------------------
[INFO] [clean:clean {execution: default-clean}]
[INFO] Deleting file set: /home/mark/devel/guava-problem/target (included: [**], excluded: [])
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/mark/devel/guava-problem/src/main/resources
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/mark/devel/guava-problem/src/test/resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] Compiling 1 source file to /home/mark/devel/guava-problem/target/test-classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
/home/mark/.m2/repository/com/google/guava/guava-gwt/11.0.1/guava-gwt-11.0.1.jar(com/google/common/collect/AbstractMultiset.java):[19,0] error: cannot find symbol
could not parse error message: symbol: static setCountImpl
location: class
/home/mark/.m2/repository/com/google/guava/guava-gwt/11.0.1/guava-gwt-11.0.1.jar(com/google/common/collect/AbstractMultiset.java):100: error: cannot find symbol
return setCountImpl(this, element, count);
^
could not parse error message: symbol: method setCountImpl(AbstractMultiset,E,int)
location: class AbstractMultiset
where E is a type-variable:
E extends Object declared in class AbstractMultiset
/home/mark/.m2/repository/com/google/guava/guava-gwt/11.0.1/guava-gwt-11.0.1.jar(com/google/common/collect/AbstractMultiset.java):105: error: cannot find symbol
return setCountImpl(this, element, oldCount, newCount);
^
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 2 seconds
[INFO] Finished at: Tue Feb 21 12:49:42 EST 2012
[INFO] Final Memory: 18M/212M
[INFO] ------------------------------------------------------------------------
Обнаружив, что источник проблемы не имеет ничего общего с Guava, а скорее с версией Maven (см. мой ответ ), я обновили заголовок и вопрос, чтобы помочь будущим пользователям.