小编Xel*_*ian的帖子

在Gradle中使用"任务"任务时为什么看不到所有任务?

task startSession << {
chant()
}
def chant() {
ant.echo(message: 'Repeat after me...')
}
3.times {
task "yayGradle$it" << {
println 'Gradle rocks'
}
}
yayGradle0.dependsOn startSession
yayGradle2.dependsOn yayGradle1, yayGradle0
task groupTherapy(dependsOn: yayGradle2)
Run Code Online (Sandbox Code Playgroud)

在我的脚本中,我有startSession任务,groupTherapy任务和三个动态生成的任务yayGradle0-3.当我执行时:

gradle tasks 
Run Code Online (Sandbox Code Playgroud)

部分输出是:

Other tasks
-----------
groupTherapy
Run Code Online (Sandbox Code Playgroud)

其他任务在哪里?如果我使用参数执行上面的命令,--all它们是可见的,但不是作为独立任务,而是依赖于groupTherapy.例如,为什么Gradle不将任务startSession显示为单独的任务?

task gradle depends

2
推荐指数
1
解决办法
1095
查看次数

如何在Gradle的buildSrc目录中导入多项目构建?

嗨,我的buildSrc目录中有两个独立的项目,让它们分别命名为12。我在buildSrc目录中添加build.gradlesettings.gradle文件,并在其中写入: settings.gradle

include \
    "one",
    "two"
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用此项目提供的某些插件时,Gradle说找不到此导入。我搜索了类似的问题,发现我必须在buildSrc中的build.gradle文件中编写:

dependencies {
    runtime subprojects.collect { owner.project(it.path) }
}
Run Code Online (Sandbox Code Playgroud)

这行是什么意思?为什么还要添加它?BuildSrc类路径上自动添加已编译的,否则我错了吗?

plugins gradle

2
推荐指数
1
解决办法
1021
查看次数

如何在Gradle的主目录中包含多项目构建中的项目?

让我们有这种结构

在此输入图像描述

我在subproject1中如何编写我的settings.gradle文件以包含subproject1subproject2作为根Project的子项目.我的settings.gradle文件在目录中?

我试过了:

include 'root:subproject1', 'root:subproject2'
Run Code Online (Sandbox Code Playgroud)

但什么都没发生.

来自Gradle doc:

如果从没有settings.gradle文件的项目中执行Gradle,Gradle将执行以下操作:

  • 它在名为master的目录中搜索settings.gradle,该目录具有与当前目录相同的嵌套级别.
  • 如果未找到settings.gradle,则会在父目录中搜索settings.gradle文件的存在.
  • 如果未找到settings.gradle文件,则构建将作为单个项目构建执行.
  • 如果找到了settings.gradle文件,Gradle将检查当前项目是否是找到的settings.gradle文件中定义的多项目层次结构的一部分.如果没有,则构建将作为单个项目构建执行.否则,执行多项目构建.

settings project multi-project gradle

2
推荐指数
1
解决办法
7018
查看次数

自定义Gradle任务类使用哪种语言?

对于创建Gradle的自定义任务类,我们将使用哪种语言 - Java还是Groovy?

例如,如果我想创建GreetingTask.groovyGreetingTask.java?如果有任何考虑更喜欢一个 - 性能或其他?

java groovy class task gradle

1
推荐指数
1
解决办法
96
查看次数

为什么不能在Java中创建本地类的实例?

如果我有这个代码.

public class Test{
        {
            class People {

            }
        }

        public static void main(String[] args) {
            People person = new People();//Compile ERROR
        }

    }
Run Code Online (Sandbox Code Playgroud)

我无法创建People的实例.

这是否意味着Initializer Block不能用于定义类?

java field class local-class

1
推荐指数
1
解决办法
2133
查看次数

这个加号在这个Java代码中的作用是什么?

我遇到了这段代码:

int a = 1;
int k = ++a + a++ + + 1;
System.out.println(k);
Run Code Online (Sandbox Code Playgroud)

我认为编译器会给出错误,但结果是5?最后一个'+'(加号)符号的目的是什么?是否标志1不是负面或是?为什么Java允许这个作为有效的声明?

java

1
推荐指数
3
解决办法
135
查看次数

java中的一个if语句中的多个逻辑表达式

嗨,我有这个例子:

  (1)
  if(false && false ||true){
            System.out.println("a");
  }
Run Code Online (Sandbox Code Playgroud)

结果:

a
Run Code Online (Sandbox Code Playgroud)

  (2)
  if(false && false | true){
            System.out.println("a");
  }
Run Code Online (Sandbox Code Playgroud)

结果:

(empty)
Run Code Online (Sandbox Code Playgroud)

在情况(1)中我们有短路OR,但在第二种情况下我们有长电路OR.行为的差异从哪里来?我知道表达式从左到右进行评估,AND的优先级高于OR,所以我无法弄清楚为什么在情况2中会发生这种情况?

java boolean short-circuiting

1
推荐指数
1
解决办法
4425
查看次数

谁触发原始类型的初始化?

我想知道是谁/什么触发了Java中原始类型的初始化,例如:

public class A {
    int primitive;
    String nonPrimitive;

    public static void main(String[] args) {
        A newObject = new A();
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,当我们创建新实例时A,A会调用类的默认构造函数.String扩展了Object,因此调用了Object的构造函数并nonPrimitive创建了var并且具有null值.

原始变量的情况如何?如果它由VM直接初始化,默认值为0,如果创建新的newObject触发它?或者它是在创建之前创建的 newObject

java primitive initialization

1
推荐指数
1
解决办法
42
查看次数

什么是"胖束"?

我在OSGi上下文中听到了俚语"胖包",所以我想知道它和普通的OSGi包有什么区别?

osgi bundle

0
推荐指数
1
解决办法
152
查看次数

groovy 中的布尔方法总是返回 true

这段代码有点愚蠢,但它完全代表了问题。这两个地图不同,但始终返回 true 。为什么会这样?

class SampleTest {

    private static boolean compare() {
        def a = [a:'one',b:'two']
        def b = [c:'three',d:'four']

        if(a.size()!=b.size()) {
            return false
        }
        a.each {
            if(!a.equals(b)){
                return false
            }
        }
        return true
    }
    static main(args) {
        println SampleTest.compare()
    }

}
Run Code Online (Sandbox Code Playgroud)

如果我添加额外的变量,那么一切正常:

class SampleTest {

    private static boolean compareArtifact() {
        boolean areEqual = true
        def a = [a:'one',b:'two']
        def b = [c:'three',d:'four']

        if(a.size()!=b.size()) {
            return false
        }
        a.each {
            if(!a.equals(b)){
                areEqual = false
            }
        }
        areEqual
    }
    static main(args) { …
Run Code Online (Sandbox Code Playgroud)

groovy equals map

0
推荐指数
1
解决办法
1万
查看次数

在 Java 中定义双重文字时使用“d”是一个好习惯吗?

嗨,如果我想定义双重文字,我写道:

(1) double a = 12.0;
Run Code Online (Sandbox Code Playgroud)

但是当我在小数点后没有定义 double 时,例如

(2) double b=12;
Run Code Online (Sandbox Code Playgroud)

使用更容易接受吗

(3) double c=12d;
Run Code Online (Sandbox Code Playgroud)

反而?

据我所知(1)是最好的方法,如果我可以问你下一个更好的方法来声明双重文字,这将是你的选择,为什么?

java double literals

0
推荐指数
1
解决办法
3359
查看次数