Gradle自定义构建

特图尔卡

我有一个包含多个模块的项目,这些模块的源位于不同的文件夹中。我想将那些独立模块的构建作为gradle构建脚本的任务。

/.
/abc/MyTest.java
/lib/<empty>
/build.gradle

build.gradle:

apply plugin: "java"

dependencies {  compile "javax.jms:jms:1.1" }

defaultTasks 'compileIt'

task compileIt (type: JavaCompile) {
    source = files("abc/MyTest.java")
    classpath = files("lib")
    destinationDir = file('classes')
}

MyTest.java:

package abc;       
public class MyTest {       
    public static void  main(String[] argv) throws javax.jms.JMSException {
        throw new javax.jms.JMSException("JMS test!");
    }    
}

运行gradle我遇到以下错误:

C:\Develop\Java\....\MyTest.java:3: error:
package javax.jms does not exist
        public static void  main(String[] argv) throws javax.jms.JMSException

似乎没有使用任何依赖项。

将“ <<”放入任务

task compileIt (type: JavaCompile) << {

我有:

C:\Develop\Java\.....>gradle
:compileIt UP-TO-DATE
BUILD SUCCESSFUL
Total time: 4.296 secs

但是到目前为止什么也没做...

问题出在哪儿?非常感谢你!

特图尔卡

解决方案是删除Java插件的用法并添加用于编译的配置:

configurations {
    compile
}

然后classpath像这样设置

classpath = configurations.compile

设置sourceCompatibilitytargetCompatibilitydependencyCacheDir完成compileIt任务。

编辑 - - - - - - - - - - - - -

正如与@Peter Niederwieser讨论的那样,更好的方法是自定义java插件:

  1. 更改默认版本的配置:

    sourceSets {
      main {
        java {
          srcDirs = ['abc']
        }
      }
      ...
    }
    

另外,您可以更改构建目录:

    compileJava {
        destinationDir = file(project.get("build.binaries.dir"))
    }
  1. 为第二个构建添加新任务

    sourceSets {
      ...
      compileTwo {
        java {
          srcDirs = ['abc2']
        }
      }
    }
    ...
    task compileTwo(type: JavaCompile) {
      source = sourceSets.compileTwo.allSource.srcDirs
      destinationDir = file('classes')    
      classpath = configurations.compile  
    }
    

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Gradle自定义构建

来自分类Dev

在Android Studio中启动自定义Gradle Android构建

来自分类Dev

Gradle中构建类型的自定义字段

来自分类Dev

Gradle自定义插件的构建引发“无法解析类”

来自分类Dev

在自定义任务中执行Gradle构建任务

来自分类Dev

自定义构建变量

来自分类Dev

自定义Gradle记录

来自分类Dev

自定义gradle任务类:是否有“构建后”钩子?

来自分类Dev

Gradle构建无法从自定义Maven存储库获取依赖项

来自分类Dev

如何在Gradle构建中使用自定义proguard.jar?

来自分类Dev

配置Gradle在开始编译之前执行自定义构建步骤

来自分类Dev

在Gradle中发布根据任务构建的自定义工件

来自分类Dev

如何在新的Gradle构建系统中使用自定义Android.mk

来自分类Dev

使用 gradle(不是存储库)构建时使用自定义提供的 .jar 文件?

来自分类Dev

如何仅列出 Gradle 构建文件中的自定义任务?

来自分类Dev

CMake自定义构建问题

来自分类Dev

使用自定义OpenSSL构建OpenVPN

来自分类Dev

自定义构建步骤Worklight 6.2

来自分类Dev

SAM CLI的自定义构建步骤

来自分类Dev

如何自定义构建Debian的busybox?

来自分类Dev

删除自定义构建模板

来自分类Dev

自定义构建过程加载错误

来自分类Dev

CMake自定义构建问题

来自分类Dev

使用自定义控件构建openlayers

来自分类Dev

构建自定义安装程序

来自分类Dev

尝试构建自定义模块

来自分类Dev

构建自定义 Genesis 主题

来自分类Dev

如何构建自定义 UITabBar?

来自分类Dev

React - 如何构建自定义钩子?