2017-05-08 68 views
0

我正在将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 
+0

你能提供一个完整的MCVE项目吗? G。在GitHub上? – Vampire

+0

@吸血鬼 - 整个构建文件都在上面 - 你还有什么要找的。这是一个构建&我可以在本地发布的项目(maven回购) - 只要添加发布任务,我就无法发布到远程回购。当我将发布更改为publishing.publications时,我没有收到错误(但是我仍然需要在任何情况下指定远程连接凭证信息) –

+0

嗯,我不立即看到错误,因此我询问是否您可以提供一个MCVE,以便我可以在本地查看错误。 – Vampire

回答

0

的问题是我是怎么读的属性 - 也是,我不再同时使用Maven和Maven的发布插件(我只使用Maven的发布)。我目前能够成功发布到nexus。