2017-01-06 48 views
0

我有一个gradle build,必须将预构建的jar文件作为工件发布。由于某种原因,它没有被拾起。下面是一个简化版本重现它:Gradle未发布自定义jar神器

文件夹内容:

settings.gradle 
build.gradle 
some.jar 

settings.gradle:

rootProject.name = 'some' 

的build.gradle:

apply plugin: 'base' 
apply plugin: 'maven-publish' 

group = 'foo.bar' 
version = '1.0' 

task copyPrebuilt(type: Copy) { 
    from(projectDir) { 
    include 'some.jar' 
    rename 'some', "some-$version" 
    } 
    into distsDir 
} 

artifacts { 
    // should be 'archives'? 
    // http://stackoverflow.com/questions/39068090/gradle-archives-artifacts-not-populated-to-default-configuration 
    'default' (file("$distsDir/some-${version}.jar")) { 
    name 'some' 
    type 'jar' 
    builtBy copyPrebuilt 
    } 
} 

some-1.0.jar不会被复制到~/.m2/repository/foo/bar/some/1.0通过gradle publishToMavenLocal

任何线索?

回答

1

得到发表的东西,最简单的方法是定义一个发布对象:

apply plugin: 'base' 
apply plugin: 'maven-publish' 

group = 'foo.bar' 
version = '1.0' 

task copyPrebuilt(type: Copy) { 
    from(projectDir) { 
     include 'some.jar' 
     rename 'some', "some-$version" 
    } 
    into buildDir 
} 

publishToMavenLocal.dependsOn copyPrebuilt 

publishing { 
    publications { 
     prebuilt(MavenPublication) { 
      artifact file("$buildDir/some-${version}.jar") 
     } 
    } 
} 

此代码publishToMavenLocal任务安装一些-1.0.jar到本地Maven仓库。