2016-10-07 42 views
0

我正在尝试将我的lib发布到bintray。但是,创建的jar文件只包含一个META-INF文件夹,并且没有任何类文件。Jar文件在bintrayUpload后不包含类文件

我按照指南https://github.com/bintray/gradle-bintray-plugin#readme,但不能得到它的工作。

这是我的gradle文件的样子。

buildscript { 
    repositories { 
     jcenter() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.2.0' 

     // NOTE: Do not place your application dependencies here; they belong 
     // in the individual module build.gradle files 
    } 
} 

plugins { 
    id "com.jfrog.bintray" version "1.7" 
} 

apply plugin: 'maven-publish' 
apply plugin: 'java' 

allprojects { 
    repositories { 
     jcenter() 
    } 
} 

publishing { 
    publications { 
     MyPublication(MavenPublication) { 
      from components.java 
      groupId '' 
      artifactId '' 
      version '1.0' 
     } 
    } 
} 

bintray { 
    user = '' 
    key = '' 
    publications = ['MyPublication'] 
    pkg { 
     repo = 'maven' 
     name = '' 
     desc = '' 
     licenses = ['Apache-2.0'] 
     websiteUrl = '' 
     vcsUrl = '' 
     version { 
      name = '1.0' 
      vcsTag = '1.0' 
      released = new Date() 
      attributes = ['gradle-plugin': 'com.use.less:com.use.less.gradle:gradle-useless-plugin'] 
     } 
    } 
} 

然后我跑gradlew bintrayUpload并上传到bintray,但jar文件只包含META-INF文件夹,没有类文件。

回答

0

我设法解决它。 最大的不同是我在推送到bintray时使用配置而不是出版物。下面是我设置的Gradle文件的工作。 然后只需运行gradlew bintrayUpload。我收到了一些我无法修复的错误消息,但是无论如何它们都无法修复,因为它无论如何都可以上传。

在根的build.gradle

plugins { 
    id "com.jfrog.bintray" version "1.7" 
    id "com.github.dcendents.android-maven" version "1.5" 
} 
在mylib.gradle文件的末尾

// bintrayUpload config 
apply from: 'bintray-publish.gradle' 

bintray-publish.gradle

apply plugin: 'com.github.dcendents.android-maven' 
apply plugin: 'com.jfrog.bintray' 

// Maven group id and version for the artifact 
group = LIB_GROUP_ID 
version = LIB_VERSION 

install { 
    repositories.mavenInstaller { 
     // This generates POM.xml with proper parameters 
     pom { 
      project { 
       packaging POM_PACKAGING 
       groupId LIB_GROUP_ID 
       artifactId LIB_ARTIFACT_ID 

       name LIB_NAME 
       description LIB_DESCRIPTION 
       url LIB_URL 

       developers { 
        developer { 
         id POM_DEVELOPER_ID 
         name POM_DEVELOPER_NAME 
        } 
       } 

       scm { 
        url POM_SCM_URL 
        connection POM_SCM_CONNECTION 
        developerConnection POM_SCM_DEV_CONNECTION 
       } 

       licenses { 
        license { 
         name POM_LICENCE_NAME 
         url POM_LICENCE_URL 
         distribution POM_LICENCE_DIST 
        } 
       } 
      } 
     } 
    } 
} 

task sourcesJar(type: Jar) { 
    from android.sourceSets.main.java.srcDirs 
    classifier = 'sources' 
} 

task javadoc(type: Javadoc) { 
    source = android.sourceSets.main.java.srcDirs 
    classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) 
} 

task javadocJar(type: Jar, dependsOn: javadoc) { 
    classifier = 'javadoc' 
    from javadoc.destinationDir 
} 

artifacts { 
    // TODO: Java doc generates errors for some reason, disable for now 
    //archives javadocJar 
    archives sourcesJar 
} 

Properties properties = new Properties() 
properties.load(project.rootProject.file('local.properties').newDataInputStream()) 

bintray { 
    user = POM_DEVELOPER_ID 
    key = properties.getProperty("bintray.apikey") 

    configurations = ['archives'] 
    pkg { 
     repo = 'maven' 
     name = BIN_TRAY_NAME 
     desc = LIB_DESCRIPTION 
     licenses = ['Apache-2.0'] 
     websiteUrl = LIB_URL 
     vcsUrl = LIB_VCS_URL 
     publish = true 
     dryRun = false 
     version { 
      name = LIB_VERSION 
      desc = LIB_DESCRIPTION 
      released = new Date() 
     } 
    } 
} 

gradle.properties

BIN_TRAY_NAME = MyLib 
LIB_VERSION = 1.0.0 
LIB_GROUP_ID = com.xxx.mylib 

# The artifact name should be the same as the library module name 
LIB_ARTIFACT_ID = mylib 

LIB_NAME = MyLib 
LIB_DESCRIPTION = My desc 
LIB_URL = https://github.com/xxx/mylib 
LIB_VCS_URL = https://github.com/xxx/mylib.git 

POM_DEVELOPER_ID = My bintray id 
POM_DEVELOPER_NAME = My bintray name 
POM_SCM_URL = scm:[email protected]/xxx/mylib.git 
POM_SCM_CONNECTION = scm:[email protected]/xxx/mylib.git 
POM_SCM_DEV_CONNECTION = scm:[email protected]/xxx/mylib.git 
POM_LICENCE_NAME = The Apache Software License, Version 2.0 
POM_LICENCE_URL = http://www.apache.org/licenses/LICENSE-2.0.txt 
POM_LICENCE_DIST=repo 
POM_PACKAGING = aar