gpt4 book ai didi

java - 在编译之前使用 Gradle 列出 SourceSet 中的所有 Java 包

转载 作者:搜寻专家 更新时间:2023-11-01 00:58:37 25 4
gpt4 key购买 nike

build.gradle 文件中,获取 SourceSet 中所有包列表的最简洁方法是什么?

我可以通过解析每个源文件来获取它,如下所示 —

def sourceSet = project.sourceSets.findByName('test')
def pattern = Pattern.compile('package (\\S+);')
def packages = []
sourceSet.allSource.each {
for (def scan = new Scanner(it); scan.hasNext();) {
def matcher = scan.nextLine() =~ pattern
if (matcher.matches()) {
packages << matcher[0][1]
break
}
}
}
packages.unique(true)

// allows, e.g.
packages.each { println it }

——但似乎应该有更好的方法。


编辑添加:我需要此信息以便在编译时将其他参数传递给 JVM,因此我需要在编译之前从源代码中获取它。

最佳答案

我进行了一些搜索,但没有找到完美的清洁解决方案。

但这里是基于java文件,使用路径解析包。不需要使用 allSource,因为包中只包含 java 文件。

此解决方案避免读取所有文件。

def sourceSet = project.sourceSets.findByName('main').java
def packages = sourceSet
.filter{ it.path.endsWith('.java') }
.collect{ it.getParentFile().path
.substring(sourceSet.srcDirs[0].path.length()+1)
.replace('/', '.') }
.unique()

packages.each { println it }

关于java - 在编译之前使用 Gradle 列出 SourceSet 中的所有 Java 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52285014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com