小编Pet*_*ser的帖子

如何更改Gradle下载位置

我开始学习gradle.但是当我用Gradle构建Spring时; 它将依赖jar下载到

C:\Users\UserName\.gradle
Run Code Online (Sandbox Code Playgroud)

有什么方法可以指定Gradle将依赖关系jar下载到特定位置吗?就像我可以在Maven中指定存储库位置一样.

系统信息:Windows 7 64位Gradle版本1.0

build gradle

62
推荐指数
3
解决办法
4万
查看次数

在Gradle中复制文件的传统方法 - 使用复制任务或复制方法?

我正在添加一个任务来将war文件部署到Tomcat ..任务需要做的唯一事情就是将war文件复制到TOMCAT位置.

有两种方法可以让我想到实现这个......但是对于gradle而言,我不太确定什么是更常规/正确(或者甚至是重要的).

task myCopy(type: Copy)

    myCopy.configure {
       from('source')
       into('target')
       include('*.war')
    }
Run Code Online (Sandbox Code Playgroud)

要么

task myCopy{
  doLast{
     copy {
       from 'source'
       into 'target'
       include '*.war'
     }   
  }

}
Run Code Online (Sandbox Code Playgroud)

gradle

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

Gradle自定义插件:从扩展对象添加依赖项

我正在尝试编写一个插件,project.dependencies根据插件扩展对象中收集的信息添加依赖项.但这似乎是不可能的.

实际上,来自扩展对象的数据仅在新任务或project.afterEvaluate闭包中可用,但忽略在这些位置添加的依赖项.


以下代码尝试添加依赖项,afterEvaluate但忽略依赖项:

apply plugin: MyPlugin

myplugin {
  version '1.0'
}

class MyPlugin implements Plugin<Project> {
  void apply(Project project) {
    project.extensions.create('myplugin', MyPluginExtension)

    project.afterEvaluate {
       def version = project.myplugin.version
       project.dependencies.add("compile", "org.foo:bar:$version") // --> ignored
    }
  }
}

class MyPluginExtension {
  def version
}
Run Code Online (Sandbox Code Playgroud)

在以下代码中,依赖项注入有效但我无权访问扩展对象:

apply plugin: MyPlugin

myplugin {
  version '1.0'
}

class MyPlugin implements Plugin<Project> {
  void apply(Project project) {
    project.extensions.create('myplugin', MyPluginExtension)    

    def version = project.myplugin.version // == null
    project.dependencies.add("compile", "org.foo:bar:$version") // --> fail …
Run Code Online (Sandbox Code Playgroud)

gradle

22
推荐指数
3
解决办法
7297
查看次数

使用Gradle编译时如何克服"package com.sun.xml.internal.xxx不存在"?

我想编译使用一些Java不推荐的"sun"包的Java代码,Gradle编译任务因此错误而失败

error: package com.sun.xml.internal.ws.developer does not exist
Run Code Online (Sandbox Code Playgroud)

我正在使用Hotspot JDK,我可以在那里看到这个包(所以它实际存在 - 在rt.jar文件中)我也尝试将rt.jar本身添加到Gradle依赖项中:

compile files( 'C:/Program Files/Java/jdk1.7.0_05/jre/lib/rt.jar')
Run Code Online (Sandbox Code Playgroud)

但没有效果

这是我的gradle -v输出:

------------------------------------------------------------
Gradle 1.2
------------------------------------------------------------

Gradle build time: Streda, 2012, september 12 10:46:02 UTC
Groovy: 1.8.6
Ant: Apache Ant(TM) version 1.8.4 compiled on May 22 2012
Ivy: 2.2.0
JVM: 1.7.0_05 (Oracle Corporation 23.1-b03)
OS: Windows 7 6.1 amd64
Run Code Online (Sandbox Code Playgroud)

我还尝试将jaxws-rt.jar添加到classpath中 - 两者都没有效果

我真的很感激任何帮助

谢谢

gradle

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

Gradle - 删除不起作用

我想在clean任务中附加一些额外的删除功能(适用于Java版本).

所以我尝试将以下内容添加到我的gradle构建脚本中.

clean.doLast{
    delete ('test.txt')
}
Run Code Online (Sandbox Code Playgroud)

当我调整"干净"任务时,我的示例文件不会被删除...我也没有收到任何错误消息,表明发生了什么.

如果我尝试以下方法:

task deleteStuff(type: Delete) {
    delete 'test.txt'
}
Run Code Online (Sandbox Code Playgroud)

事情确实有效.

我可以不为任务添加(通过doLast)删除功能吗?这样做的正确方法是什么(没有攻击Ant任务).

gradle

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

确定Spock测试的执行顺序

有没有办法设置在Spock规范中执行测试的顺序?

例如:

class MySpec extends IntegrationSpec {
    def 'test A'...

    def 'test B'...
}
Run Code Online (Sandbox Code Playgroud)

我想'test A'总是在'test B'之前执行

这是因为我正在使用Geb和Spock进行一些功能测试,并且数据不会在测试之间回滚.

grails spock geb

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

迫使')'和'{'之间的空格

在我们的代码中,我们有时会这样

public class Demo{
    public String value(){
        if (something){  
            while(true){
                ...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我目前正在尝试配置我的checkstyle配置以强制开发人员在'{'之前有空格:

public class Demo {
    public String value() {
        if (something) {  
            while(true) {
                ...
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用.有没有人知道这个特定设置的正确checkstyle配置?我想检查此代码作为我的gradle构建的一部分

checkstyle

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

重写的spock测试方法仍在运行

我有一系列从基类扩展的类.我已经为类编写了spock测试类,其基类测试类测试了正常的功能,但在少数类的情况下,标准测试逻辑不起作用.

我的计划是在需要时简单地覆盖基本测试方法,但似乎spock仍在运行它们.

例:

基础测试:

def "testing name"() {
     expect:
     assert STANDARD CODE HERE
}
Run Code Online (Sandbox Code Playgroud)

子类测试:

def "testing name"() {
     expect:
     assert CUSTOM CODE HERE
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行测试时,基本测试的方法仍在运行并且失败.

groovy unit-testing spock

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

在运行时在build.gradle之外的Gradle项目版本

我想在我的Java代码中获得Gradle项目版本.

在Maven中,它可以这样做:

version.properties:

version=${project.version}    
Run Code Online (Sandbox Code Playgroud)

解析为:

version=1.0-SNAPSHOT    
Run Code Online (Sandbox Code Playgroud)

在jar/war中如果我们将它添加到pom.xml:

<resources>
    <resource>
        <directory>src/main/resources</directory>
        <filtering>true</filtering>
    </resource>
</resources>
Run Code Online (Sandbox Code Playgroud)

有没有方便的方法在Gradle中实现类似的结果?或者我应该手动编写一个生成带有项目版本的属性文件的任务,然后在我的代码中读取它?

java gradle maven

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

为什么我的大型多项目gradle构建起步缓慢?

我是一个拥有大型多项目构建(~350个模块)的团队,我们注意到进行单个构建(-a)仍然需要花费大量时间.在构建整套事物时,开销并不是那么糟糕,但是当我们做类似的事情时:

cd my/individual/project
gradle -a --configure-on-demand --daemon build
Run Code Online (Sandbox Code Playgroud)

在配置阶段(在它开始构建任何东西之前,它仍然需要30-40秒,我们使用--dry-run选项测量)

我们有大约10个自定义任务,我们正在设置这些任务的输入和输出,但我们仍然看到这个非常长的配置时间.我们正在使用gradle 1.10

gradle build.gradle

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

标签 统计

gradle ×7

spock ×2

build ×1

build.gradle ×1

checkstyle ×1

geb ×1

grails ×1

groovy ×1

java ×1

maven ×1

unit-testing ×1