JsonSchema2Pojo和gradle中的手动任务



我想要实现的

我想有一个手动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

  1. 添加task.enabled = false
  2. 将插件配置放到另一个任务
  3. 检查插件的源代码以找到一种方法将此任务从构建任务中断开

但是以上的尝试都失败了。当我运行gradle任务时,我总能看到generateJsonSchema2DataClassgenerateJsonSchema2DataClass0作为构建任务的一部分。

我使用java 8和gradle 6.9.3

我是gradle插件的作者

对你的问题的简短回答是"不,这不是一个正常项目的预期流程"。但是,总是可以创建一个新项目,构建一次并提取源代码。

您能解释一下,您想从build链中排除run的原因吗?

我唯一的猜测是构建和发布模型。如果是这种情况,可以使用一些gradle魔法来做到这一点,在GitHub项目

的讨论中有描述。乌利希期刊指南:基于你的gradle脚本,我有很多的"为什么"。我想问的问题,如果你能回答的话会更容易一些。

最新更新