我是 IntelliJ 和 Java 新手,但我有相当多的 TeamCity 经验,主要是构建 .Net 项目。
我在 IntelliJ 中创建了一个非常简单的 Android Library 项目,基本上只有一个使用 RxJava 的类 ( Reactive Extensions for Java )。我已使用 项目结构 -> 库 -> 来自 Maven 在 IntelliJ 中添加了 Rx 库。我添加的实际库是 com.netflix.rxjava:rxjava-android:0.19.6 ,它引入了 com.netflix.rxjava:rxjava-core:0.19.6 。
这非常有效,我的项目可以在 IntelliJ 中编译,甚至无需安装 Maven。干得好,JetBrains。
但是,当我尝试使用 IntelliJ-IDEA 运行程序在 TeamCity 中构建项目时,该项目无法编译。糟糕的 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 构建运行器来代替;但该项目没有 POM 文件,因此它不是 Maven 构建。
- 我尝试在构建代理上安装 Maven,这似乎没有任何区别,而且我不需要安装它即可让 IntelliJ 在本地工作,所以我不明白为什么需要它。
- IntelliJ 构建运行程序设置中有一个名为 MAVEN_REPOSITORY 的路径宏,我尝试将其设置为各种不同的值,但没有成功。
- 我已经查看了 JetBrains 的 IntelliJ 运行程序文档,据我所知,我已经正确配置了构建步骤。显然我错过了一些东西。
这有点令人沮丧,我已经修改了几个小时,但似乎没有任何效果,基本上我不知道我做错了什么。我一定是在某个地方错过了什么。我怎样才能让这个构建在 TeamCity 中正常工作?
最佳答案
从 TeamCity 9.1 开始,其 IDEA 运行程序无法再构建 Maven 模块,也无法从 Maven Central 自动下载外部 Artifact 。
基本上,您需要的是:
使用 TeamCity Maven 运行程序和
maven-dependency-plugin
逐一下载外部 Artifact ,如 this 中所述。答案., e.例如:mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.0:get com.netflix.rxjava:rxjava-android:0.19.6
您将需要与 IDEA 项目中的依赖项数量一样多的 Maven 构建步骤,并且这些步骤必须先于 IDEA 运行程序构建步骤。
在构建配置级别,将
system.path.macro.MAVEN.REPOSITORY
系统属性设置为%env.HOME%/.m2/repository
。
就是这样。
祝您构建愉快!
关于java - 在 TeamCity 中构建 IntelliJ 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25374568/