Нов съм в IntelliJ и Java, но имам доста опит в TeamCity, най-вече в изграждането на .Net проекти.
Създадох много прост проект Android Library в IntelliJ с основно един клас, който използва RxJava (Реактивни разширения за Java). Добавих библиотеката Rx в IntelliJ с помощта на Структура на проекта -> Библиотеки -> От Maven. Действителната библиотека, която добавих, е com.netflix.rxjava:rxjava-android:0.19.6
, която привлича com.netflix.rxjava:rxjava-core:0.19.6
.
Това работи брилянтно и моят проект се компилира в IntelliJ, без дори да се налага да инсталирам Maven. Добра работа, JetBrains.
Въпреки това, когато се опитам да изградя проекта в TeamCity с помощта на IntelliJ-IDEA runner, проектът не се компилира. Лош JetBrains!
Получавам грешки във всички препратки към rx.*
, които, както казах, всички работеха перфектно на работната ми станция. Грешките от TeamCity изглеждат така:
C:\BuildAgent\work\eefd62e2c3082b56\src\com\example\TigraAndroidUtilities\ObservableModel.java:3: package rx does not exist import rx.Observable; ^ C:\BuildAgent\work\eefd62e2c3082b56\src\com\example\TigraAndroidUtilities\ObservableModel.java:4: package rx.subjects does not exist import rx.subjects.BehaviorSubject; ^ C:\BuildAgent\work\eefd62e2c3082b56\src\com\example\TigraAndroidUtilities\ObservableModel.java:18: cannot find symbol symbol: class BehaviorSubject location: class com.example.TigraAndroidUtilities.ObservableModel private BehaviorSubject modelStream; ^ C:\BuildAgent\work\eefd62e2c3082b56\src\com\example\TigraAndroidUtilities\ObservableModel.java:63: cannot find symbol symbol: class Observable location: class com.example.TigraAndroidUtilities.ObservableModel public Observable toObservable() ^ C:\BuildAgent\work\eefd62e2c3082b56\src\com\example\TigraAndroidUtilities\ObservableModel.java:28: cannot find symbol symbol: variable BehaviorSubject location: class com.example.TigraAndroidUtilities.ObservableModel modelStream = BehaviorSubject.create(modelData); ^ C:\BuildAgent\work\eefd62e2c3082b56\src\com\example\TigraAndroidUtilities\ObservableModel.java:65: cannot find symbol symbol: variable Observable location: class com.example.TigraAndroidUtilities.ObservableModel if (completed) { return Observable.empty(); } ^
Ето какво опитах:
- Обмисля се използването вместо това на Maven build runner; но проектът няма POM файл, така че не е компилация на Maven.
- Опитах да инсталирам Maven на агента за изграждане, това изглежда няма значение и не трябваше да го инсталирам, за да може IntelliJ да работи локално, така че не виждам защо е необходимо.
- Има макрос за пътя, наречен MAVEN_REPOSITORY в настройките на IntelliJ build runner и аз се опитах да го настроя на различни различни стойности, без успех.
- Разгледах документацията на JetBrains за IntelliJ runner и доколкото мога да преценя, съм конфигурирал правилно моята стъпка за изграждане. Ясно е обаче, че пропускам нещо.
Всичко това е малко разочароващо, бърниках с часове, но изглежда нищо не работи и всъщност нямам представа какво правя погрешно. Сигурно съм пропуснал нещо някъде. Как мога да накарам тази компилация да работи правилно в TeamCity?