- 浏览: 1037420 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
繁星水:
Useful!!
Object-C之(Null)与(Bool) -
pacer123:
请问注解@ApiModelProperty 在哪个jar包下面 ...
Micro Service工具集之Swagger:可测试的样式化API文档 -
sucheng2016:
这东东真的好用么/
对象转换利器之Dozer -
zzq0324:
http://git.oschina.net/zzq0324/ ...
基于Spring-WS的Restful API的集成测试 -
lrz0534:
你好,我在maven上面下载了swagger-springmv ...
Micro Service工具集之Swagger:可测试的样式化API文档
Maven作为目前Java界最好的Dependency管理系统,把jar包托管到Maven中央库,然后通过Maven Dependency使用是目前业界各种第三方库的普遍做法,如果,你想把自己开发的一些库分享给别人使用,也可以遵循这样的套路。Gradle可以看做是升级版的Maven,其使用了Maven最优秀的Dependency管理系统,但是,又规避了Maven的build pipeline的刻板和xml格式配置文件等缺点,可以说是目前Java界最好的构建工具。下面就来说说,如何使用Gradle把自己开发的jar包部署到Maven中央库中。
Part 1: 为自己的项目注册Maven中央库账号
在http://oss.sonatype.orgz注册账号,(注:Sonatype是Maven中央库的管理系统),注册之后获得用户名,密码。后面的build脚本会用得上。
在Sonatype的JIRA系统中,创建一个issue(选择Project: Community Support - Open Source Project Repository Hosting; Issue Type: New Project),告诉Sonatype管理员,你想托管一个项目到Sonatype上。注意该Issue创建完之后,只有管理员有更改权限,因此,小心不要写错信息
创建完之后,需要等待Sonatype管理员审核,一般不超过2个工作日,一旦审核通过,会在该Issue上标明Resolved,这就是说中央库已经准备好,可以随时上传自己的文件了。
Part 2: Maven中央库托管规范
为了构建更加良好的Maven生态环境,Maven对于托管到其上的库有非常明确的质量要求: * 项目的Pom文件必须包含如下元素: * 如果部署的是jar包且jar包里面有java classes,那么除了jar包外,还必须上传该jar包的源代码包,javadoc包,即必须部署三个包.jar/-sources.jar/ **-javadoc.jar。 * 所有要部署的包都必须使用GPG签名,签名证书的Public Key必须上传到hkp://pool.sks-keyservers.net/ 服务器上。 More Info Maven Central Requirementhttps://docs.sonatype.org/display/Repository/Central+Sync+Requirements
Part 3: GPG签名
前面提到,所有要上传到Maven中央库的文件都需要做签名,首先,需要下载GPG工具(https://gpgtools.org/)。 Mac用户可以直接下载带UI的工具GPGTools Installer https://s3.amazonaws.com/gpgtools/GPGTools-20130330.dmg,安装完之后,直接生成新的证书,然后Send Public Key to Key Server就行了。非常简单。 如果你是命令行控,请参考Gennerate GPG signature With Maven https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
Part 4: Gradle 脚本
Part 5: 遇到过的问题
1. java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
这个问题只有在使用的是OpenJDK的时候才会遇到,原因是OpenJDK的包里面没有带有效的证书,在MacOS上,只要把系统库里带的cacerts给它关联过去就行了。
2.Return Code is 400
这个问题有一段心酸的过程,有兴趣的可以看一下这个issue :issue fixed process 在部署过程中收到这个Error Message的情况有2种: * 重复部署同一个jar包到Maven库,但是,Maven库却设置为不允许重复部署,在Gradle 1.0版本的MavenDeployer就有这个问题,会重复提交jar包,不过已经在1.1版本修复。 * 试图部署一个release版本的jar包到snapshot库。 我的情况是后者,不过Root Cause比较汗颜,因为我把version number 写成了“0.1.0-snapshot”,不符合Maven对Snapshot包的规范,因此,被当做release 版本了,修改为“0.1.0-SNAPSHOT”就成功了
Part 1: 为自己的项目注册Maven中央库账号
在http://oss.sonatype.orgz注册账号,(注:Sonatype是Maven中央库的管理系统),注册之后获得用户名,密码。后面的build脚本会用得上。
在Sonatype的JIRA系统中,创建一个issue(选择Project: Community Support - Open Source Project Repository Hosting; Issue Type: New Project),告诉Sonatype管理员,你想托管一个项目到Sonatype上。注意该Issue创建完之后,只有管理员有更改权限,因此,小心不要写错信息
创建完之后,需要等待Sonatype管理员审核,一般不超过2个工作日,一旦审核通过,会在该Issue上标明Resolved,这就是说中央库已经准备好,可以随时上传自己的文件了。
Part 2: Maven中央库托管规范
为了构建更加良好的Maven生态环境,Maven对于托管到其上的库有非常明确的质量要求: * 项目的Pom文件必须包含如下元素: * 如果部署的是jar包且jar包里面有java classes,那么除了jar包外,还必须上传该jar包的源代码包,javadoc包,即必须部署三个包.jar/-sources.jar/ **-javadoc.jar。 * 所有要部署的包都必须使用GPG签名,签名证书的Public Key必须上传到hkp://pool.sks-keyservers.net/ 服务器上。 More Info Maven Central Requirementhttps://docs.sonatype.org/display/Repository/Central+Sync+Requirements
Part 3: GPG签名
前面提到,所有要上传到Maven中央库的文件都需要做签名,首先,需要下载GPG工具(https://gpgtools.org/)。 Mac用户可以直接下载带UI的工具GPGTools Installer https://s3.amazonaws.com/gpgtools/GPGTools-20130330.dmg,安装完之后,直接生成新的证书,然后Send Public Key to Key Server就行了。非常简单。 如果你是命令行控,请参考Gennerate GPG signature With Maven https://docs.sonatype.org/display/Repository/How+To+Generate+PGP+Signatures+With+Maven
Part 4: Gradle 脚本
apply plugin: 'idea' apply plugin: 'java' apply plugin: 'maven' apply plugin: 'signing' //使用signing plugin做数字签名 //定义GroupID和Version,ArtefactID会自动使用Project名 group = 'com.thoughtworks.toggle' version = '0.1.0-SNAPSHOT' sourceCompatibility = 1.6 targetCompatibility = 1.6 repositories { mavenCentral(); } dependencies { compile( 'junit:junit:4.11', ) } uploadArchives { repositories { mavenDeployer { //为Pom文件做数字签名 beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } //指定项目部署到的中央库地址,UserName和Password就是Part 1中注册的账号。 repository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { authentication(userName: sonatypeUsername, password: sonatypePassword) } //构造项目的Pom文件,参见Part 2中Pom文件的规范,不要遗漏必填项 pom.project { name project.name packaging 'jar' description 'Toggle is a little java tool to make your life easier when you try to use Feature Toggle in Java.' url 'https://github.com/xianlinbox/Toggle' scm { url 'scm:git@github.com:xianlinbox/Toggle.git' connection 'scm:git@github.com:xianlinbox/Toggle.git' developerConnection 'git@github.com:xianlinbox/Toggle.git' } licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' distribution 'repo' } } developers { developer { id 'xianlinbox' name 'Liu Xiannings' } } } } } } //参见Part 2, 为项目生成**.jar/**-javadoc.jar/**-sources.jar task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from 'build/docs/javadoc' } task sourcesJar(type: Jar) { classifier = 'sources' from sourceSets.main.allSource } artifacts { archives jar archives javadocJar archives sourcesJar } //为所有的jar包做数字签名 signing { sign configurations.archives }
Part 5: 遇到过的问题
1. java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty
这个问题只有在使用的是OpenJDK的时候才会遇到,原因是OpenJDK的包里面没有带有效的证书,在MacOS上,只要把系统库里带的cacerts给它关联过去就行了。
cd $(/usr/libexec/java_home -v 1.7)/jre/lib/security ln -fsh /System/Library/Java/Support/CoreDeploy.bundle/Contents/Home/lib/security/cacerts
2.Return Code is 400
这个问题有一段心酸的过程,有兴趣的可以看一下这个issue :issue fixed process 在部署过程中收到这个Error Message的情况有2种: * 重复部署同一个jar包到Maven库,但是,Maven库却设置为不允许重复部署,在Gradle 1.0版本的MavenDeployer就有这个问题,会重复提交jar包,不过已经在1.1版本修复。 * 试图部署一个release版本的jar包到snapshot库。 我的情况是后者,不过Root Cause比较汗颜,因为我把version number 写成了“0.1.0-snapshot”,不符合Maven对Snapshot包的规范,因此,被当做release 版本了,修改为“0.1.0-SNAPSHOT”就成功了
发表评论
-
关于并发的思考
2015-02-08 22:33 4347并发数 并发数和2个因 ... -
使用Hystrix守护应用(3)
2015-01-02 22:04 12882监控HystrixCommand 除了隔离依赖服务的调用外,H ... -
使用Hystrix守护应用(2)
2014-12-30 14:35 16835接上篇(http://ningandjiao.iteye.co ... -
使用Hystrix守护应用(1)
2014-12-30 14:28 15298Hystrix(https://github.com/Netf ... -
Mac下同时安装多个版本的JDK
2014-04-14 21:42 33255JDK8 GA之后,小伙伴们喜大普奔,纷纷跃跃欲试,想体验一下 ... -
性能测试工具之Gatling
2014-01-15 19:27 17304Gatling一直是久闻其名但 ... -
JavaMail测试工具之GreenMail
2014-01-08 19:13 7372不管现在各种Mock框架的运用有多广,我个人在写单元测试的时候 ... -
定制一个Gradle Plugin --- project-structure
2014-01-03 21:23 8502最近在项目中遇到一个 ... -
Restful Spring MVC应用的Request验证
2013-12-26 15:05 23379在开放平台的时候,尤其是坐Rest服务的时候,因为用户可以给你 ... -
Spring MVC中的异常处理
2013-12-25 13:13 24182在一个良好的Rest架构的应用中,所有的异常都应该有对应的Ht ... -
Spring 4.0升级小贴士
2013-12-22 19:40 11446随着Spring4.0的发布,很多同志估计都在考虑升级的事情了 ... -
Spring4.0给我们带来什么?
2013-12-22 17:13 45037JDK8 对JDK8的支持,这个目前来说还是探索性质,毕竟Ja ... -
RESTful API版本控制策略
2013-12-15 19:51 31788做RESTful开放平台,一方面其API变动越少, 对API调 ... -
对象转换利器之Dozer
2013-12-14 22:46 19891在Java的世界中,经常会 ... -
基于Spring-WS的Restful API的集成测试
2013-11-28 19:41 9074在很多Java企业级应用中,Spring占据了非常重要的位置, ... -
TDD Of Spring JMS
2013-11-25 19:53 1765不知何时养成了习惯,在没有一个可运行的测试的时候,个人完全没有 ... -
Micro Service工具集之Swagger:可测试的样式化API文档
2013-09-28 19:55 44752在我之前的一篇博文中,介绍了Yammer开发团队贡献的开源微服 ... -
进击的Java开发
2013-07-14 20:48 5924今天在公司的邮件组中看到一组很有趣的讨论,这是我最喜欢目前公司 ... -
说说SpringBatch的领域概念
2013-06-21 20:32 3629谈到Spring Batch,会谈到 ... -
做项目时需要考虑的安全性问题
2013-04-16 20:20 4790在开发一个项目的时候,大家经常会忽略项目的安全性问题,有很多的 ...
相关推荐
标题中的“gradle将多模块打包成一个jar...总的来说,这个示例旨在教给读者如何使用Gradle将一个多模块的Java项目打包成一个可执行的JAR文件,以便于部署和运行。通过阅读提供的博客文章,可以获取更详细的步骤和解释。
通过MavenPublisher,开发者可以直接将包上传到Bintray,创建和管理版本,设置许可,甚至同步到Maven中央仓库。 ### 使用步骤 1. **配置插件**:首先在`build.gradle`文件中添加MavenPublisher插件的依赖。 2. **...
总的来说,GradleMavenPush是一个高效且灵活的解决方案,能够帮助开发者轻松地将他们的Gradle构建产物部署到各种Maven存储库,促进项目的共享和协作。通过这个工具,你可以节省大量时间,专注于更重要的开发工作,而...
- 使用Maven的deploy插件将你的jar包部署到私有仓库: ``` mvn deploy ``` 4. **验证部署** - 在Nexus的Web界面中,查看“my-private-repo”仓库,确认你的jar包已成功上传。 - 在其他项目中,同样添加对私有...
本篇将深入探讨如何使用Gradle自定义Task和Plugin来发布Artifact,并将其部署到MavenLocal仓库。我们将主要关注`gradle-publish-to-MavenLocal.zip`这个压缩包中的内容,它包含了一个使用Kotlin DSL配置的Gradle项目...
Maven的核心功能之一就是自动解决项目依赖,通过访问Maven中央仓库获取所需jar包。但企业内部可能需要私有的库,包含特定版本或未公开的组件,这就需要搭建Maven私服。 **2. Nexus简介** Nexus是Sonatype公司提供...
"源码部署JAR包"这个标题暗示了我们需要关注的是与Openfire3.9.1版本相关的Java Archive(JAR)文件,这些文件是Java程序的打包形式,包含类文件、资源文件以及元数据。 描述中提到有6个JAR包,可能包括了Openfire...
对于Maven或Gradle等构建工具的用户,可以通过在pom.xml或build.gradle文件中指定依赖来自动管理这些jar包。 总结来说,"东方通开发需要的jar包"是Java开发者在构建与东方通产品集成的项目时不可或缺的资源。通过...
在本案例中,我们关注的是非 Maven 构建的 SpringBoot jar 包,这意味着项目可能是通过 Gradle 或者手动构建的。 1. **非 Maven 构建** Maven 是一种流行的 Java 项目管理工具,用于构建、依赖管理和项目信息管理...
3. **处理JAR文件**:在Spring Boot构建过程中,可以使用Maven或Gradle插件来在打包前加密所有类和资源文件。例如,可以自定义一个Maven插件,调用`EncryptionUtil`的`encrypt()`方法,将编译后的字节码加密,然后再...
Maven仓库是存储Maven项目依赖项的仓库,用于存储项目需要的jar包和其他依赖项。阿里云Maven仓库镜像是阿里云提供的一个Maven仓库镜像,旨在帮助开发者快速搭建项目,提高开发效率。 阿里云Maven仓库镜像的好处: ...
对于基于JFinal的Web应用,这个过程可能会遇到一些挑战,因为JFinal是轻量级的Java Web框架,其部署方式与传统的Maven或Gradle项目有所不同。本文将详细介绍一个非Maven项目的JFinal应用如何打包成JAR,并在控制台上...
- “工具”可能包括IDE(如Eclipse, IntelliJ IDEA)、构建工具(如Maven, Gradle)、版本控制系统(如Git)等,它们在开发和部署Java项目过程中起到重要作用。 7. **博文链接** - 提供的博客链接可能包含更具体...
使用`gradlew publishToMavenLocal`命令,Gradle会将项目打包成JAR或AAR,并将其上传到本地Maven仓库。这个过程包括创建POM文件,该文件包含了库的元数据信息。 6. **POM文件**: POM(Project Object Model)是...
这个插件极大地提高了开发者的效率,因为它自动化了构建、打包和部署库到Maven仓库的过程。 首先,让我们了解一下Gradle。Gradle是一种基于Groovy和Kotlin DSL的构建自动化系统,广泛用于Java项目,同时也支持其他...
在下载并解压“gradle-3.2.1-bin.zip”后,你需要将Gradle添加到系统环境变量中以便全局使用。具体步骤如下: 1. 找到解压后的Gradle目录,例如`C:\Program Files\gradle-3.2.1`。 2. 在系统环境变量的“Path”中...
1. **安装xjar**:首先需要下载xjar的最新版本,并将其添加到系统路径或者项目构建工具(如Maven或Gradle)的依赖中。 2. **创建加密配置**:定义加密策略,包括选择加密算法、设置密钥等。这通常通过xjar的配置...
当我们有多个jar包相互依赖时,需要将它们合并成一个单一的jar,以便于部署和使用。Ant是一个流行的Java构建工具,它允许我们通过配置XML文件(build.xml)来执行自动化构建任务,包括jar文件的创建和合并。下面我们...
在实际开发中,为了简化依赖管理,通常会使用构建工具如Maven或Gradle,它们能够自动下载并管理这些jar包。对于本地开发,可以将所有必需的jar包添加到`jars`目录中,并通过`spark-submit`命令行工具提交作业时,...
在 Maven 项目中,可以使用 distributionManagement 节点来部署 Jar 或 War 包到 Maven 私服仓库。例如,在 Pom.xml 文件中添加以下配置: <id>my-repo <url>...