无法配置Gradle的发布扩展
问题描述:
我正在将gradle v3.4与以下build.gradle文件一起使用。但是,我收到以下任何任务复制的错误。有关可能在build.gradle文件中配置错误的任何想法?无法配置Gradle的发布扩展
错误
What went wrong:
A problem occurred evaluating root project 'some-test'.
> Cannot configure the 'publishing' extension after it has been accessed.
错误指向发布任务开始的地方。
的build.gradle
group 'some.group'
version '0.0.1' //-SNAPSHOT'
apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'idea'
apply plugin: 'com.google.protobuf'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin:'com.github.johnrengelman.shadow'
buildscript {
repositories {
mavenLocal()
mavenCentral()
maven {
credentials {
username project.properties['nexusUsername']
password project.properties['nexusPassword']
}
url project.properties['nexus.url.snapshot']
}
jcenter()
}
dependencies {
classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.0'
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.4'
}
}
if (!JavaVersion.current().java8Compatible) {
throw new IllegalStateException("Must be built with Java 8 or higher")
}
mainClassName = "com.some.project.some.class"
defaultTasks 'clean', 'build', 'shadowJar', 'install'
compileJava {
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
}
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
repositories {
maven {
credentials {
username project.properties['nexusUsername']
password project.properties['nexusPassword']
}
url project.properties['nexus.url.snapshot']
}
mavenLocal()
mavenCentral()
jcenter()
}
def grpcVersion = '1.1.2'
def log4j2Version = '2.8.1'
def configVersion = '1.3.1'
def jacksonVersion = '2.8.7'
dependencies {
compile "io.grpc:grpc-netty:${grpcVersion}"
compile "io.grpc:grpc-protobuf:${grpcVersion}"
compile "io.grpc:grpc-stub:${grpcVersion}"
compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: jacksonVersion
compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: jacksonVersion
compile group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: jacksonVersion
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: log4j2Version
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: log4j2Version
compile 'io.netty:netty-tcnative-boringssl-static:1.1.33.Fork26'
compile group: 'org.bouncycastle', name: 'bcprov-jdk16', version: '1.46'
compile "com.typesafe:config:${configVersion}"
testCompile group: 'junit', name: 'junit', version: '4.11'
testCompile "org.mockito:mockito-core:1.9.5"
compile 'commons-lang:commons-lang:2.3'
}
sourceSets {
main {
proto {
srcDir '../../proto' // In addition to the default 'src/main/proto'
}
java {
}
}
test {
proto {
srcDir '../../proto' // In addition to the default 'src/test/proto'
}
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.2.0'
}
plugins {
grpc {
artifact = "io.grpc:protoc-gen-grpc-java:${grpcVersion}"
}
}
generateProtoTasks {
all()*.plugins {
grpc {
// To generate deprecated interfaces and static bindService method,
// turn the enable_deprecated option to true below:
option 'enable_deprecated=false'
}
}
}
}
idea {
module {
sourceDirs += file("${projectDir}/build/generated/source/proto/main/java");
sourceDirs += file("${projectDir}/build/generated/source/proto/main/grpc");
}
}
jar {
manifest {
attributes(
'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
'Main-Class': 'com.some.project.some.class'
)
}
}
shadowJar {
baseName = 'commons-java'
classifier = null
version = null
}
artifacts {
archives shadowJar
}
publishing {
publications {
shadow(MavenPublication) {
from components.shadow
}
}
repositories {
maven {
credentials {
username "someuser"
password "somepassword"
}
url "http://nexus.somewhere.com/repository/some-test-snapshots/"
}
}
}
tasks.publish.dependsOn 'shadowJar'
startScripts.enabled = false
答
的问题是我是怎么读的属性 - 也是,我不再同时使用Maven和Maven的发布插件(我只使用Maven的发布)。我目前能够成功发布到nexus。
你能提供一个完整的MCVE项目吗? G。在GitHub上? – Vampire
@吸血鬼 - 整个构建文件都在上面 - 你还有什么要找的。这是一个构建&我可以在本地发布的项目(maven回购) - 只要添加发布任务,我就无法发布到远程回购。当我将发布更改为publishing.publications时,我没有收到错误(但是我仍然需要在任何情况下指定远程连接凭证信息) –
嗯,我不立即看到错误,因此我询问是否您可以提供一个MCVE,以便我可以在本地查看错误。 – Vampire