我想要实现的
我想有一个手动gradle任务,我可以基于Json模式生成Java类。但是,我不希望在运行其他fx时运行此任务。gradle构建。
我做了什么
首先我用
创建了一个简单的gradle java项目gradle init
然后我添加了jsonschema2dataclass插件,并配置它如下(我当前的build.gradle):
/*
* This file was generated by the Gradle 'init' task.
* (...)
*/
plugins {
// Apply the application plugin to add support for building a CLI application in Java.
id 'application'
id "org.jsonschema2dataclass" version "4.5.0"
}
repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}
dependencies {
// Use JUnit Jupiter API for testing.
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.2'
// Use JUnit Jupiter Engine for testing.
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
// This dependency is used by the application.
implementation 'com.google.guava:guava:29.0-jre'
}
application {
// Define the main class for the application.
mainClass = 'GradlePlayground.App'
}
jsonSchema2Pojo {
includeGeneratedAnnotation = true
generateBuilders = true
targetPackage = 'org.example.api' // specify package for your needs
targetDirectoryPrefix = file("${project.rootDir}/app/src/main/java")
source.setFrom files("${project.rootDir}/app/src/main/resources/json")
}
What I've try
- 添加
task.enabled = false
- 将插件配置放到另一个任务
- 检查插件的源代码以找到一种方法将此任务从构建任务中断开
但是以上的尝试都失败了。当我运行gradle任务时,我总能看到generateJsonSchema2DataClass
和generateJsonSchema2DataClass0
作为构建任务的一部分。
我使用java 8和gradle 6.9.3
我是gradle插件的作者
对你的问题的简短回答是"不,这不是一个正常项目的预期流程"。但是,总是可以创建一个新项目,构建一次并提取源代码。
您能解释一下,您想从build
链中排除run的原因吗?
我唯一的猜测是构建和发布模型。如果是这种情况,可以使用一些gradle魔法来做到这一点,在GitHub项目
的讨论中有描述。乌利希期刊指南:基于你的gradle脚本,我有很多的"为什么"。我想问的问题,如果你能回答的话会更容易一些。