无法在plugins {}块中使用'jsonschema 2 pojo' gradle插件?

nhaq1z21  于 2022-11-14  发布在  其他
关注(0)|答案(3)|浏览(130)

任何人都可以解释在哪里可以得到id的插件,为什么我不能在plugins{}中使用它?
我想开始用这个

plugins {
    id "jsonschema2pojo" version "0.5.1"
}

但是,我不得不使用buildscript应用插件的老方法,
我不能两者都用,因为它们互相排斥。
这是我在GitHub上问的问题https://github.com/joelittlejohn/jsonschema2pojo/issues/896#issuecomment-411491416
如果不可能,有人知道一个更好/不同的gradle插件来实现这一点吗?

gdrx4gfi

gdrx4gfi1#

过了一会儿我总算使它工作起来了:

构建.gradle

plugins {
    id "org.jsonschema2pojo.gradle" version "1.0.0-alpha2"
}

由于jsonschema2pojo返回空值id.namespace,因此org.jsonschema2pojo.gradle返回org.jsonschema2pojoid.namespace,然后我们可以使用一种求解策略。

设置.gradle

pluginManagement {
    repositories {
        maven { url ".../nexus/content/groups/GradlePlugins/" }
        maven { url ".../nexus/content/groups/public/" }
    }
    resolutionStrategy {
        eachPlugin {
            if (requested.id.namespace == 'org.jsonschema2pojo') {
                useModule("org.jsonschema2pojo:jsonschema2pojo-gradle-plugin:$requested.version")
            }
        }
    }
}

我希望这能帮助一些人,这不是最干净的,但它的工作。

gj3fmq9x

gj3fmq9x2#

我可以从this file中看到id是jsonschema2pojo
但是searching the gradle plugin portal返回的插件结果为零,所以你需要找到它的托管位置。
例如设置.gradle

pluginManagement {
  repositories {
      maven {
        url 'maven-repo'
      }
      gradlePluginPortal()
      ivy {
        url 'ivy-repo'
      }
  }
}
svdrlsy4

svdrlsy43#

根据jsonschema2pojo plugin repo,id必须为jsonschema2pojo,我们需要更改groupname,以便gradle能够找到它:

分级属性

我使用所有版本的属性

versions.org.jsonschema2pojo=1.1.2

设置.gradle

  • 使用Maven Central和Gradle插件门户获取插件
  • 更改组名称以便gradle可以找到它(& N)
pluginManagement {
    repositories {
        mavenCentral()
        gradlePluginPortal()
    }

    plugins {
       // other plugin versions
       id 'com.github.ben-manes.versions' version getProperty('versions.com.github.ben.manes.versions')        
    }

    resolutionStrategy {
        eachPlugin {
            if (requested.id.name == 'jsonschema2pojo') {
                useModule group: 'org.jsonschema2pojo',
                          name: 'jsonschema2pojo-gradle-plugin',
                          version: getProperty('versions.org.jsonschema2pojo')
            }
        }
    }
}

构建.gradle

只有插件id是必需的,因为我们已经在settings.gradle中设置了版本

plugins {
    id 'java'
    // external plugin versions are in settings.gradle
    id 'com.github.ben-manes.versions'
    ...
    id 'jsonschema2pojo'
}

相关问题