我开始学习gradle.但是当我用Gradle构建Spring时; 它将依赖jar下载到
C:\Users\UserName\.gradle
Run Code Online (Sandbox Code Playgroud)
有什么方法可以指定Gradle将依赖关系jar下载到特定位置吗?就像我可以在Maven中指定存储库位置一样.
系统信息:Windows 7 64位Gradle版本1.0
我正在添加一个任务来将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) 我正在尝试编写一个插件,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) 我想编译使用一些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中 - 两者都没有效果
我真的很感激任何帮助
谢谢
我想在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任务).
有没有办法设置在Spock规范中执行测试的顺序?
例如:
class MySpec extends IntegrationSpec {
def 'test A'...
def 'test B'...
}
Run Code Online (Sandbox Code Playgroud)
我想'test A'总是在'test B'之前执行
这是因为我正在使用Geb和Spock进行一些功能测试,并且数据不会在测试之间回滚.
在我们的代码中,我们有时会这样
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构建的一部分
我有一系列从基类扩展的类.我已经为类编写了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)
但是当我运行测试时,基本测试的方法仍在运行并且失败.
我想在我的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中实现类似的结果?或者我应该手动编写一个生成带有项目版本的属性文件的任务,然后在我的代码中读取它?
我是一个拥有大型多项目构建(~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 ×7
spock ×2
build ×1
build.gradle ×1
checkstyle ×1
geb ×1
grails ×1
groovy ×1
java ×1
maven ×1
unit-testing ×1