在TeamCity中构建IntelliJ项目

时间:2014-08-19 01:56:14

标签: java maven intellij-idea teamcity

我是IntelliJ和Java的新手,但我有很多TeamCity经验,主要是构建.Net项目。

我在IntelliJ中创建了一个非常简单的 Android Library 项目,基本上只有一个使用RxJava(Reactive Extensions for Java)的类。我使用项目结构 - >在IntelliJ中添加了Rx库图书馆 - > 来自Maven 。我添加的实际库是com.netflix.rxjava:rxjava-android:0.19.6,它会引入com.netflix.rxjava:rxjava-core:0.19.6

这非常出色,我的项目在IntelliJ中编译,甚至无需安装Maven。不错的工作,JetBrains。

但是,当我尝试使用IntelliJ-IDEA运行程序在TeamCity中构建项目时,该项目无法编译。 Bad 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中正确运行此构建?

1 个答案:

答案 0 :(得分:0)

TeamCity 9.1 开始,其IDEA运行程序无法再构建 Maven 模块,也无法自动下载外部工件 Maven Central

基本上,你需要的是:

  1. 使用 TeamCity Maven 跑步者 maven-dependency-plugin逐个下载外部工件,如{ {3}}回答。,e。 G:

    mvn org.apache.maven.plugins:maven-dependency-plugin:3.0.0:get com.netflix.rxjava:rxjava-android:0.19.6
    

    您需要与IDEA项目中的依赖项数量一样多的 Maven 构建步骤,并且这些步骤必须先于IDEA运行器构建步骤。

  2. 在构建配置级别,将system.path.macro.MAVEN.REPOSITORY系统属性设置为%env.HOME%/.m2/repository

  3. 就是这样。

    快乐建筑!