如何从Gradle调用自定义Java方法
请问,在Gradle构建脚本中调用Java方法最方便的方法是什么?此方法包含我希望在构建期间使用的功能;一项功能太复杂,无法作为脚本中的Groovy方法,但不足以命令完整的自定义Gradle插件 我的问题不是从Gradle运行Java应用程序。这将涉及到JVM的分叉,并且没有简单的方法可以将输出发布回Gradle,我需要那个输出 最初我的代码是src/main/java,但必须在早期进行编译,才能从Gradle构建脚本中调用 然后我尝试将buildhelper类移动到一个子模块项目中,一个单类子模块,希望在调用主构建脚本之前构建子模块;我在里面放了:如何从Gradle调用自定义Java方法,java,gradle,Java,Gradle,请问,在Gradle构建脚本中调用Java方法最方便的方法是什么?此方法包含我希望在构建期间使用的功能;一项功能太复杂,无法作为脚本中的Groovy方法,但不足以命令完整的自定义Gradle插件 我的问题不是从Gradle运行Java应用程序。这将涉及到JVM的分叉,并且没有简单的方法可以将输出发布回Gradle,我需要那个输出 最初我的代码是src/main/java,但必须在早期进行编译,才能从Gradle构建脚本中调用 然后我尝试将buildhelper类移动到一个子模块项目中,一个单类子
buildscript {
dependencies {
classpath 'this.project:build-helper:1.0-SNAPSHOT'
}
}
但是
build helper
子项目显然不是build first,尽管有in设置。gradle
作为first,而build失败,因为无法识别依赖项。构建脚本似乎是在构建子模块之前进行评估的,而不是在构建任何其他模块之前。哦 有两个主要用例
源代码位于当前项目的src/main/java
中——因此定义buildscript类路径时该类不存在
选项:
sourceSets.main.runtimeClasspath构建一个类,并通过类加载器加载/运行该类
buildscript {
dependencies {
classpath project(':other-project')
}
}
task doStuff {
doLast {
def myClass = new MyClass()
myClass.doStuff()
}
}
有两个主要用例 源代码位于当前项目的
src/main/java
中——因此定义buildscript类路径时该类不存在
选项:
sourceSets.main.runtimeClasspath构建一个类,并通过类加载器加载/运行该类
buildscript {
dependencies {
classpath project(':other-project')
}
}
task doStuff {
doLast {
def myClass = new MyClass()
myClass.doStuff()
}
}
因此,最简单的方法是将我的build helper Java源代码放入
buildSrc
目录:/buildSrc/src/main/Java/foo/bar/Extractor.Java
,就是这样,您可以从Gradle构建脚本中的任何地方直接调用新提取器(..).extratMetadata(…)
,无需导入包,无需使用Java插件,Gradle默认理解buildScr下类似Maven的目录结构
归功于:所以最简单的方法是将我的构建助手Java源代码放入
buildSrc
目录:/buildSrc/src/main/Java/foo/bar/Extractor.Java
,就这样,您可以从Gradle构建脚本中的任何地方直接调用新提取器(..).extratMetadata(…)
,无需导入包,无需使用Java插件,Gradle默认理解buildScr下类似Maven的目录结构
贷记至:我尝试了第二个建议,但对我无效,项目属性不允许在那里,并且帮助者项目不在建筑中。我必须使用稍微过时的Gradle版本3.5,所以也许这就是为什么..啊,你是对的。。。你可以用一只手来做这个。看到了,我尝试了第二个建议,但它对我不起作用,项目属性不允许在那里,助手项目也没有生成。我必须使用稍微过时的Gradle版本3.5,所以也许这就是为什么..啊,你是对的。。。你可以用一只手来做这个。看到和