0

我是Java 8 java.time JSP 标签库的维护者。我几乎没有自己发布图书馆的经验。对于这个库的发布,我做了一些研究,并以一个可以在 GitHub 中查看的 gradle 构建脚本结束。这个过程有点笨拙,但它最终会奏效。

似乎有一种普遍的理解,即jcenter()存储库正在获得很多关注。可能是安卓的原因。无论如何,我看到了一篇令人鼓舞的博客文章,并决定试一试并将该库迁移到 Maven Central 的 JCenter 发布。应该很容易。

至少对我来说不是。可能是我的错,因为我对 Maven、工件和所有这些东西的了解都很差。无论如何,我给了它几个小时的研究,并提出了一个新的 gradle 构建发布到我的 Bintray maven 存储库。如果我没记错的话,这是向 JCenter 发布的第一步。

这是我到目前为止所拥有的:

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

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

group = 'net.sargue'
version = '1.1.2'

sourceCompatibility = 1.8
compileJava.options.encoding = 'UTF-8'
compileTestJava.options.encoding = 'UTF-8'

repositories {
    jcenter()
}

configurations {
    testCompile.extendsFrom compileOnly
}

dependencies {
    compileOnly 'javax.servlet:javax.servlet-api:3.0.1'
    compileOnly 'javax.servlet.jsp:javax.servlet.jsp-api:2.2.1'
    compileOnly 'javax.servlet.jsp.jstl:javax.servlet.jsp.jstl-api:1.2.1'

    testCompile 'junit:junit:4.12'
    testCompile 'org.springframework:spring-test:4.1.7.RELEASE'
}

jar {
    manifest {
        attributes 'Implementation-Title': 'Java 8 java.time JSP tags',
                   'Implementation-Version': version
    }
}

task javadocJar(type: Jar) {
    classifier = 'javadoc'
    from javadoc
}

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

publishing {
    publications {
        MyPublication(MavenPublication) {
            from components.java
            artifact sourcesJar
            artifact javadocJar
            artifactId 'java-time-jsptags'

            pom.withXml {
                asNode().children().last() + {
                    resolveStrategy = Closure.DELEGATE_FIRST

                    name 'Java 8 java.time JSP tags'
                    description 'JSP tag support for Java 8 java.time (JSR-310)'
                    url 'https://github.com/sargue/java-time-jsptags'

                    scm {
                        connection 'scm:git:git@github.com:sargue/java-time-jsptags.git'
                        developerConnection 'scm:git:git@github.com:sargue/java-time-jsptags.git'
                        url 'git@github.com:sargue/java-time-jsptags.git'
                    }

                    licenses {
                        license {
                            name 'The Apache License, Version 2.0'
                            url 'http://www.apache.org/licenses/LICENSE-2.0.txt'
                        }
                    }

                    developers {
                        developer {
                            id 'sargue'
                            name 'Sergi Baila'
                            email 'sargue@gmail.com'
                        }
                    }
                }
            }
        }
    }
}

bintray {
    user = BINTRAY_USER
    key = BINTRAY_KEY
    publications = ['MyPublication']
    pkg {
        repo = 'maven'
        name = 'java-time-jsptags'
        licenses = ['Apache-2.0']
        vcsUrl = 'https://github.com/sargue/java-time-jsptags.git'
        version {
            name = project.version
            desc = 'Java 8 java.time JSP tags'

            gpg {
                sign = true
                passphrase = BINTRAY_GPG
            }
        }
    }
}

您可以在我的公共 Bintray maven 存储库中找到最新发布的结果。您可以将其与Maven Central 上当前可用的相同版本的文件进行比较。

恭喜您到目前为止正在阅读本文,因为我还没有提出任何问题。对于那个很抱歉。

我的问题:

gradle 构建脚本是否正确和正确/规范的方式?鉴于该库非常简单,我发现构建脚本又大又笨重。它应该更容易,甚至还有一个 gradle 插件。但是新脚本比 maven 中央脚本要长。

*.md5*.sha1文件呢?将由 JCenter、Maven Central、同步过程生成……还是我应该这样做?

鉴于存储库上没有取消发布功能,是否有某种方法可以在不发布库的实际版本的情况下测试所有这些?(并且有充分的理由,嗯?leftpad 任何人?)。

4

1 回答 1

1

首先,很好地解决了这个问题。它看起来不错,效果很好。

它比另一个更大不是因为你使用 Bintray 而不是 Central,而是因为你使用maven-publishplugin 而不是maven,而且更强大,配置更冗长。您可以将 Bintray(和bintray插件)与mavenand一起使用maven-publish,无论您喜欢什么。

重新测试它——您总是可以针对您的私有存储库运行测试构建(单击“设置我”按钮以获取有关如何设置 Maven 和/或 Gradle 以从中解决问题的说明)。

另一个验证将同步到 Maven Central。如果您的包元数据有问题,它将失败。

关于 md5 和 sha1,我们认为没有理由将可计算元数据存储为现代分发平台上的文件,但我们会在同步时将它们发送到 Maven Central。

于 2016-04-30T00:52:46.157 回答