Maven/Gradle是一种计算包含所有可传递依赖项的依赖项的总大小的方法
我希望能够对我的每个项目POM执行分析,以确定每个直接依赖项根据其所有可传递依赖项的总和向结果包引入多少字节 例如,如果依赖项A引入了B、C和D,我希望能够看到一个摘要,显示A->total size=(A+B+C+D)Maven/Gradle是一种计算包含所有可传递依赖项的依赖项的总大小的方法,maven,gradle,pom.xml,dependency-management,Maven,Gradle,Pom.xml,Dependency Management,我希望能够对我的每个项目POM执行分析,以确定每个直接依赖项根据其所有可传递依赖项的总和向结果包引入多少字节 例如,如果依赖项A引入了B、C和D,我希望能够看到一个摘要,显示A->total size=(A+B+C+D) 是否有一种现有的Maven或Gradle方法来确定此信息?我不知道如何显示总计,但您可能会得到一份项目报告,其中可以显示每个依赖项大小的信息。请检查此maven插件:如果您有一个配置,其中包含您希望计算其大小的所有必要依赖项,您只需将以下代码片段放入build.gradle文件
是否有一种现有的Maven或Gradle方法来确定此信息?我不知道如何显示总计,但您可能会得到一份项目报告,其中可以显示每个依赖项大小的信息。请检查此maven插件:如果您有一个配置,其中包含您希望计算其大小的所有必要依赖项,您只需将以下代码片段放入build.gradle文件中即可:
def size = 0
configurations.myConfiguration.files.each { file ->
size += file.size()
}
println "Dependencies size: $size bytes"
编译生成文件后,当您运行任何gradle任务时,应该会打印出来。我在工作站上保留了一个小的
pom.xml
模板,以识别重的依赖项
假设您想查看org.eclipse.jetty的权重:jetty客户端及其所有传递项在一个新文件夹中创建它
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>not-used</groupId>
<artifactId>fat</artifactId>
<version>standalone</version>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-client</artifactId>
<version>LATEST</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-shade-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
4.0.0
不用
脂肪
独立的
org.eclipse.jetty
码头客户机
最新的
maven阴影插件
包裹
阴凉处
然后将cd
放入文件夹,运行mvn-package
并检查生成的fat-jar的大小。在类Unix系统上,您可以使用du-h target/fat standalone.jar
来实现这一点
为了测试另一个maven工件,只需在上述模板中更改
groupId:artifactId
。以下是构建的任务。gradle:
task depsize {
doLast {
final formatStr = "%,10.2f"
final conf = configurations.default
final size = conf.collect { it.length() / (1024 * 1024) }.sum()
final out = new StringBuffer()
out << 'Total dependencies size:'.padRight(45)
out << "${String.format(formatStr, size)} Mb\n\n"
conf.sort { -it.length() }
.each {
out << "${it.name}".padRight(45)
out << "${String.format(formatStr, (it.length() / 1024))} kb\n"
}
println(out)
}
}
task depsize{
多拉斯特{
最终格式STR=“%,10.2f”
final conf=configurations.default
final size=conf.collect{it.length()/(1024*1024)}.sum()
最终输出=新的StringBuffer()
这并不完全是我所希望的,因为我只需打开生成的war文件就可以获得此信息。不过,感谢您指出此插件,因为它确实具有一些很好的功能,如许可证摘要。没有此类属性:size for class:org.gradle.api.internal.project.DefaultProject\u可能的解决方案:state,name
如果C引入了C1和C2,我想你也希望包含它们吗?是的,目的是能够很容易地确定依赖项对结果WAR或可执行JAR的总大小的影响。谢谢,这是我找到的最接近的答案。我仍然不相信没有一个合适的(内置的)方法。截至2016年1月,我知道没有内置的方法。这是最有帮助的方法,但不幸的是mvn依赖项:get
不推荐下载到自定义位置;mvn依赖项:copy
不支持传递依赖项和mvn依赖项:copy依赖项
requireres是一个pom.xml
文件,它至少和上面的解决方案一样麻烦。这太棒了。谢谢!:)无论如何,以类似于“gradle dependencies”的方式显示它?不知道。不过,你可以享受任务的更新版本。现在它包含填充,输出看起来更棒!