gradle - 当使用标准生命周期插件已被弃用并计划在 Gradle 3.0 中删除时,定义自定义 ‘build’ 任务已被弃用

标签 gradle build.gradle gradlew

我在我的 build.gradle 脚本中遇到了一个问题我的脚本基本上是生成 POM 文件,然后将工件复制到其他位置以及在 build/lib 下使用不同的名称。我面临的问题如何调用下面的构建任务因为它正在生成错误。我正在使用 gradle 2.3

错误:“当使用标准生命周期插件已被弃用并计划在 Gradle 3.0 中删除时,定义自定义‘构建’任务已被弃用”

我的任务构建将构建工件,然后生成 POM 并将工件移动到不同的位置,但我遇到了以下错误。

我的完整脚本是

apply plugin: 'cpp'
apply plugin: 'java'
//-- set the group for publishing
group = 'com.tr.anal'

/**
 * Initializing GAVC settings
 */
def buildProperties = new Properties()
file("version.properties").withInputStream {
        stream -> buildProperties.load(stream)
}
//add the jenkins build version to the version
def env = System.getenv()
if (env["BUILD_NUMBER"]) buildProperties.analBuildVersion += "_${env["BUILD_NUMBER"]}"
version = buildProperties.analBuildVersion
println "${version}"

//name is set in the settings.gradle file
group = "com.t.anal"
version = buildProperties.analBuildVersion
println "Building ${project.group}:${project.name}:${project.version}"

repositories {
    maven {
      url "http://cm.thon.com:900000/artifactory/libs-snapshot-local"
    }
     maven {
      url "http://cm.thon.com:9000000/artifactory/libs-release"
    }
}
    dependencies {
   compile ([
    "com.tr.anal:analytics-engine-common:4.+"
      ])
}



model {
  repositories {
    libs(PrebuiltLibraries) {
      jdk {
        headers.srcDirs "${System.properties['java.home']}/../include",
        "${System.properties['java.home']}/../include/win32",
        "${System.properties['java.home']}/../include/darwin",
        "${System.properties['java.home']}/../include/linux"
      }
    }
  }
}

model {
  platforms {
    x64 { architecture "x86_64" }
    x86 { architecture "x86" }
  }
}

model {
  components {
    main(NativeLibrarySpec) {
      sources {
        cpp {
          source {
            lib library: 'main', linkage: 'static'
            lib library: 'jdk', linkage: 'api'
            srcDir "src/main/c++/native"
            include "**/JniSupport.cpp"
            include "**/DiseaseStagingJni.cpp"
          }
        }
      }
    }
  }
}

def nativeHeadersDir = file("$buildDir/nativeHeaders")
//def compilePath = configurations.compile.resolve().collect {it.absolutePath}.join(";")
binaries.all {
    // Define toolchain-specific compiler and linker options
    if (toolChain in Gcc) {
        cppCompiler.args "-I${nativeHeadersDir}"
        cppCompiler.args "-g"
        linker.args '-Xlinker', '-shared -LNativeJNI/src/main/resources/DSresources/DSLib -lds64 -Wl'
}
}

//def nativeHeadersDir = file("$buildDir/nativeHeaders")
task nativeHeaders {
    // def nativeHeadersDir = file("$buildDir/nativeHeaders")
     def outputFile = file("$nativeHeadersDir/DiseaseStagingJniWrapper.h")
     def classes = [
             'com.truvenhealth.analyticsengine.common.diseasestaging.DiseaseStagingJniWrapper'
                  ]
     inputs.files sourceSets.main.output
     inputs.property('classes', classes)
     outputs.file outputFile
     doLast {
         outputFile.parentFile.mkdirs()
         def compilePath = configurations.compile.resolve().collect {it.absolutePath}.join(":")
         println "Using Compile Path: ${compilePath}"
         exec {
             executable org.gradle.internal.jvm.Jvm.current().getExecutable('javah')
             args '-o', outputFile
             args '-classpath', compilePath
             args classes
         }
     }
 }

             tasks.withType(CppCompile) { task ->
                 task.dependsOn nativeHeaders
             }
/*****************************
 * Packaging
 *****************************/

apply plugin: "maven"


// Workaround for Jenkins-Artifactory plugin not picking up the POM file

def pomFile = file("${buildDir}/libs/${archivesBaseName.toLowerCase()}-${version}.pom")
task newPom << {
  pom {
      project {
          groupId project.group
          artifactId project.name
          version project.version
          description = "Configuration Management Gradle Plugin"
      }
  }.writeTo(pomFile)
}
//disabling the install task since we're not using maven for real
install.enabled = false

//for publishing to artifactory via jenkins
if(project.hasProperty('artifactoryPublish')) {
  artifactoryPublish {
    mavenDescriptor pomFile
  }
}
def filechange = file("build/libs/NativeJNI-${project.version}.so")
task copyfile(type: Copy) {
     from 'build/binaries/mainSharedLibrary'
     into 'build/libs'
include('libmain.so')
rename ('libmain.so', "$filechange")
 }
//build.dependsOn copyfile
task build (dependsOn: ["newPom","copyfile"]) << {
    println "build in progress"
}

def someFile = file("build/libs/NativeJNI-${project.version}.so")
artifacts {
    archives someFile
}

最佳答案

看起来这是 3.0 中的错误,
https://github.com/GradleFx/GradleFx/issues/235

关于gradle - 当使用标准生命周期插件已被弃用并计划在 Gradle 3.0 中删除时,定义自定义 ‘build’ 任务已被弃用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30038290/

相关文章:

android-studio - Android Studio 3.1构建因ClassNotFoundException而失败

android - Gradlew测试不起作用

android - LeakCanary 与 Cordova 的依赖关系 - 找不到方法 debugCompile()

android - 如何禁用上传 Firebase Crashlytics 的 alpha 和 beta 版本的映射文件?

gradle - 如何将 Gradle 链接到原生 Android 库并解决 'could not find method externalNativeBuild()' ?

java - Pitest(PIT突变测试)与本地dynamodb异常

java - Gradle:无法下载ojdbc7.jar

java - Gradle 的 jar 中没有显示依赖项?

java.lang.AbstractMethodError : abstract method "com. google.android.gms.tasks.Task Firebase 更新后

android - Gradle同步不会自动解析带有@aar批注的Android库项目依赖项