在 gradle (3.3) 中查找 jacoco 代理 jar 的位置
Finding location of jacoco agent jar in gradle (3.3)
我正在尝试在应用程序服务器上进行测试覆盖率分析,不想在单元测试和端到端测试之间手动管理 jacoco 版本。
有没有办法从 gradle 任务中获取代理的路径,我可以依靠 gradle 来保持插件和手动附件之间的 jacoco 代理版本一致。
最终目标是 运行 附加了 jacoco 代理的服务器,并在端到端测试期间收集测试覆盖率信息。
根据 Gradle doc,jacoco 闭包将配置 toolVersion
以控制 jacocoagent
版本。
jacoco {
toolVersion = "0.7.6.201602180812"
}
这里是 gradle source code 来解析 jacocoagent.jar
:
/**
* Unzips the resolved {@code org.jacoco.agent.jar} to retrieve the {@code jacocoagent.jar}.
*
* @return a file pointing to the {@code jacocoagent.jar}
*/
public File getJar() {
if (agentJar == null) {
agentJar = project.zipTree(getAgentConf().getSingleFile()).filter(new Spec<File>() {
@Override
public boolean isSatisfiedBy(File file) {
return file.getName().equals("jacocoagent.jar");
}
}).getSingleFile();
}
return agentJar;
}
事实上,如果您下载了 jar(例如 org.jacoco.agent-0.7.6.201602180812.jar
)并解压,您会看到它位于顶层:
$ unzip org.jacoco.agent-0.7.6.201602180812.jar
Archive: org.jacoco.agent-0.7.6.201602180812.jar
inflating: META-INF/MANIFEST.MF
inflating: META-INF/MTNMINDS.SF
inflating: META-INF/MTNMINDS.RSA
creating: META-INF/maven/
creating: META-INF/maven/org.jacoco/
creating: META-INF/maven/org.jacoco/org.jacoco.agent/
inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml
inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties
creating: org/
creating: org/jacoco/
creating: org/jacoco/agent/
inflating: jacocoagent.jar
inflating: org/jacoco/agent/AgentJar.class
inflating: about.html
如果有帮助请告诉我。
您可以将代理作为依赖项获取。根据页面 http://www.jacoco.org/jacoco/trunk/doc/repo.html:Maven 坐标 - groupdId
是 org.jacoco
,artifactId
是 org.jacoco.agent
,classifier
是 runtime
。这是打包到 JAR 中的同一工件,它提供对作为资源(org.jacoco:org.jacoco.agent
又名 "API to get a local copy of the agent")的代理的访问,并由 Gradle JaCoCo 插件使用。为了 Gradle JaCoCo 插件和依赖项之间的一致性,可以将版本指定为变量。
我正在尝试在应用程序服务器上进行测试覆盖率分析,不想在单元测试和端到端测试之间手动管理 jacoco 版本。 有没有办法从 gradle 任务中获取代理的路径,我可以依靠 gradle 来保持插件和手动附件之间的 jacoco 代理版本一致。
最终目标是 运行 附加了 jacoco 代理的服务器,并在端到端测试期间收集测试覆盖率信息。
根据 Gradle doc,jacoco 闭包将配置 toolVersion
以控制 jacocoagent
版本。
jacoco {
toolVersion = "0.7.6.201602180812"
}
这里是 gradle source code 来解析 jacocoagent.jar
:
/**
* Unzips the resolved {@code org.jacoco.agent.jar} to retrieve the {@code jacocoagent.jar}.
*
* @return a file pointing to the {@code jacocoagent.jar}
*/
public File getJar() {
if (agentJar == null) {
agentJar = project.zipTree(getAgentConf().getSingleFile()).filter(new Spec<File>() {
@Override
public boolean isSatisfiedBy(File file) {
return file.getName().equals("jacocoagent.jar");
}
}).getSingleFile();
}
return agentJar;
}
事实上,如果您下载了 jar(例如 org.jacoco.agent-0.7.6.201602180812.jar
)并解压,您会看到它位于顶层:
$ unzip org.jacoco.agent-0.7.6.201602180812.jar
Archive: org.jacoco.agent-0.7.6.201602180812.jar
inflating: META-INF/MANIFEST.MF
inflating: META-INF/MTNMINDS.SF
inflating: META-INF/MTNMINDS.RSA
creating: META-INF/maven/
creating: META-INF/maven/org.jacoco/
creating: META-INF/maven/org.jacoco/org.jacoco.agent/
inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.xml
inflating: META-INF/maven/org.jacoco/org.jacoco.agent/pom.properties
creating: org/
creating: org/jacoco/
creating: org/jacoco/agent/
inflating: jacocoagent.jar
inflating: org/jacoco/agent/AgentJar.class
inflating: about.html
如果有帮助请告诉我。
您可以将代理作为依赖项获取。根据页面 http://www.jacoco.org/jacoco/trunk/doc/repo.html:Maven 坐标 - groupdId
是 org.jacoco
,artifactId
是 org.jacoco.agent
,classifier
是 runtime
。这是打包到 JAR 中的同一工件,它提供对作为资源(org.jacoco:org.jacoco.agent
又名 "API to get a local copy of the agent")的代理的访问,并由 Gradle JaCoCo 插件使用。为了 Gradle JaCoCo 插件和依赖项之间的一致性,可以将版本指定为变量。