我定义了以下Sonar Ant目标:
<target name='sonar'>
<property name='sonar.sources' value='${src.dir}'/>
<property name='sonar.tests' value='${test.src.dir}'/>
<property name='sonar.binaries' value='build/classes'/>
<path id='jars'>
<fileset dir='${env.JAVA_HOME}/jre/lib' includes='*.jar'/>
<fileset dir='build/lib/test' includes='*.jar'/>
</path>
<pathconvert property='sonar.libraries' refid='jars' pathsep=','/>
<exec executable='p4' outputproperty='p4.P4CLIENT'>
<arg value='set'/>
<arg value='P4CLIENT'/>
</exec>
<propertyregex
property='p4client'
input='${p4.P4CLIENT}'
regexp='P4CLIENT=([^ ]+) *.*'
replace='\1'/>
<propertyregex
property='sonar.timestamp'
input='${build.time}'
regexp='_'
replace='T'/>
<sonar:sonar key='com.netflix:${module.name}' version='${p4client}@${sonar.timestamp}' xmlns:sonar='antlib:org.sonar.ant'/>
<property name='sonar.dynamicAnalysis' value='reuseReports'/>
<property name='sonar.emma.reportPath' value='${coverage.dir}'/>
</target>
Run Code Online (Sandbox Code Playgroud)
当我运行'ant sonar'并在我的浏览器中调出Sonar时,我会看到有关src目录中的类的信息,但是没有关于测试目录中的内容的信息.
如果我将$ {test.src.dir}添加到sonar.sources而不设置sonar.tests,我会看到有关测试类的一些信息,但Sonar仍会报告0测试成功.
我如何获得它以便我可以深入了解每种测试方法及其统计数据?
buildSrc/build.gradle编译的类在主PROJECT类中使用时不会在运行时解析.
My Groovy project structure looks like this:
-PROJECT
-buildSrc/
-build.gradle
-/src/main/groovy
- com.company.global.test.report
-src/test/groovy
-build.gradle
Run Code Online (Sandbox Code Playgroud)
有什么东西我可以添加到顶级PROJECT/build.gradle,以允许它编译的类使用buildSrc/build.gradle编译的类?
我正在使用两个不同的 Git 存储库(即 github 和 stash),并且对于每个存储库我想使用不同的电子邮件地址。我知道我可以使用git config
,但我不想每次创建新工作区时都必须记住执行此操作。因此,我想创建一个在命令行上设置电子邮件地址的别名。这可以做到吗?
我想我可以创建一个脚本(而不是别名)git config
,但是有没有更简单的方法来做到这一点?
我对 git 相当陌生,对 Phabricator 甚至更陌生,我试图在项目早期建立一个干净的工作流程。据我了解,使用 git 的正确做法是为每个功能创建一个新分支,在分支中实现它,然后将分支合并到 master 中。效果很好,没问题。
输入 Phabricator 并进行预推送代码审查。我创建一个分支,我们称之为“B”,实现一些东西,运行“arc diff”将其进入 Phabricator 的差异审查系统,等待批准,最后运行“arc land”推送到主存储库。到目前为止,一切都很好。但是,我不想在等待审稿人回复我的同时暂停进一步的开发。
因此,我正在审查我的提交,并且我想开始研究细化或依赖功能。我创建了一个分支,我们称之为“SB”,然后开始工作。我让 SB 准备好送审,但 B 尚未获得批准。“arc diff”看起来会将现有提交与我的新更改结合起来,这是我不想要的 - 这是一个新更改,而不是对旧更改的更新。我尝试“arc diff B”,它起作用了,我在 Differential 中得到了新的修订版,其中仅包含新的更改。B获得批准,我在B上运行“arc land”来提交。这有效。
SB获得批准,我在SB上运行“arc land”来提交。我收到一个使用异常 - Arcanist 将两个修订版视为在 SB 中而不是在 master 中。我尝试切换到 master 并运行更新,然后重试。同样的错误。我尝试使用 --revision 标志来实现这两个更改(即使其中之一确实已经实现)。我遇到合并冲突。我解决并提交合并冲突,然后重试。我再次遇到完全相同的合并冲突。
我最终想到了在 SB 上尝试 rebase 的想法,这最终让“arc land”正常工作。所以,我有一个技术上可行的解决方案,但这对我来说似乎很笨拙和尴尬。有没有更好的方法来避免手动变基的需要,只是为了让 Arcanist 认识到不,我已经着陆的修订版不是我现在着陆的一部分?
我有以下几点:
shadowJar {
relocate 'com.google.common', 'com.example.com.google.common'
}
Run Code Online (Sandbox Code Playgroud)
它会生成包含所有模块依赖项的“-all.jar”文件。
shadowJar {
relocate 'com.google.common', 'com.example.com.google.common'
dependencies {
include('com.example.com.google.common')
}
}
Run Code Online (Sandbox Code Playgroud)
和:
shadowJar {
relocate 'com.google.common', 'com.example.com.google.common'
dependencies {
include(dependency('com.google.guava:guava:14+'))
}
}
Run Code Online (Sandbox Code Playgroud)
两者都产生绝对没有类的“-all.jar”文件。
如何创建仅包含项目类和重定位类的“-all.jar”文件?
我想做如下的事情:
if (System.getenv('JENKINS_URL') == null) {
org.gradle.daemon = true
org.gradle.configureondemand = true
org.gradle.parallel = true
}
Run Code Online (Sandbox Code Playgroud)
但这个if
条件似乎被完全忽略了。我还尝试过诸如org.gradle.daemon = System.getenv('JENKINS_URL') == null
、org.gradle.daemon = Eval.me("System.getenv('JENKINS_URL') == null")
、之类的东西org.gradle.daemon = { System.getenv('JENKINS_URL') == null }()
,org.gradle.daemon = "${System.getenv('JENKINS_URL') == null}"
所有这些都从未将属性设置为 true。
是否可以设置其值是有条件的 Gradle 属性设置?
我想保存传递给JobDSL作业的参数.我知道我可以参考个别参数,但我想使代码通用.我如何访问传递给作业的参数列表?
当前代码看起来像:
final jobParameters = new File('parameters')
jobParameters.write("""
|AOEU=${AOEU}
|SNTH=${SNTH}
"""[1..-1].stripMargin().trim())
Run Code Online (Sandbox Code Playgroud)
我希望能够让它看起来像:
final jobParameters = new File('parameters')
jobParameters.write(params.iterator().join('\n'))
Run Code Online (Sandbox Code Playgroud)
params
是Build Flow Plugin中可用的东西,而不是JobDSL插件.
./gradlew properties
显示没有具有值的属性,${JAVA_HOME}
并且以下发出错误指示不存在此类属性:
println org.gradle.java.home
println gradle.java.home
println java.home
Run Code Online (Sandbox Code Playgroud)
最后,我想为tools.jar
JDK 的一部分指定一个编译时依赖项。例如:
dependencies {
compile files("${java.home}/lib/tools.jar")
}
Run Code Online (Sandbox Code Playgroud) 我想做点什么,timeout 12s tail -f access.log | wc -l
但我没有看到输出wc
.能做到这一点需要做些什么?
我有以下代码:
def f(String s) {
assert !s?.contains('.')
}
Run Code Online (Sandbox Code Playgroud)
什么 Hamcrest 匹配器可用于测试断言?我知道我可以使用try
/catch
块,但我更喜欢将测试的圈复杂度保持为 1。