Gradle初探(三):发布项目到Nexus资源库

4. 发布项目

在公司开发中,如果采取Maven这种项目构建方式的,一般都会架设一个Nexus Maven私服在公司服务器上,一些公司积累的资源组件和中央库没有提供的资源,以及一些项目都会发布到私服中,然后开发人员可以通过Maven在具体开发时导入内部资源。那么既然现在要用gradle替换Maven,那么这个需求则需要满足,通过查看官方文档,可以通过引入‘maven-publish‘实现。具体添加的配置如下:

.......

apply plugin: ‘maven-publish‘//添加Maven发布插件

.......

//上传资源配置

uploadArchives {

repositories {

mavenDeployer {

//上传资源到Maven私服

repository(url: "http://localhost:8081/nexus/content/repositories/releases/") {

authentication(userName:"admin",password:"admin123")

}

pom.version ="$project.version"

pom.artifactId ="$project.name"

pom.groupId ="$project.group"

}

}

}

通过添加以上配置,通过upload命令,已经可以把项目发布到我的本地私服http://localhost:8081/nexus/content/repositories/releases/中。但是问题又来了,这里我只能把项目发布到本地的releases库中,但是如果我这个项目还是dev版或者snapshot版怎么办?

这里就是体现gradle构建方式比maven灵活的地方。整个build.gradle文件其实就是一段groovy语言的代码。说到这里大家就都懂了吧,根据不同版本发布到不同的库,这不就是一个条件判断的事嘛。

将url提取为变量,加入相关判断代码,如下:

//默认发布到Maven Nexus私服的发行库

def nexusUrl ="http://localhost:8081/nexus/content/repositories/releases/"

//如果为快照版本发布到Maven Nexus私服的快照库

if(version.endsWith("-SNAPSHOT")) {

nexusUrl ="http://localhost:8081/nexus/content/repositories/snapshots/"

}

......

uploadArchives {

......

//上传资源到Maven私服

repository(url: nexusUrl) {

authentication(userName:"admin",password:"admin123")

}

......

}

好了,现在所有版本号为"-SNAPSHOT"的都会被发布到快照库,而其他的则会发布到发行库,现在执行下upload看下效果吧。。。。

图4.1 upload命令执行结果

图4.2 Nexus

图4.3 资源详情

另外,在引入了‘maven-publish‘后,如果配置了mavenLocal(),在upload时也会把资源提交到本地Maven资源库中。

图4.4 本地资源库

总结

几个小时的试玩,说明不了什么问题,但是gradle的灵活性确实还是让我印象深刻,非常能体现它约定优于配置的原则。但是如果要玩转它还需要学习一定的groovy语言。和程序猿都了解XML相比,这里有个时间成本。并且由于非常灵活,而很有可能出现配置的混乱,但是总体还是觉得利大于弊。写腻了配置XML的方式,在配置里写代码,想着都有趣。。。

时间: 2024-09-30 10:23:56

Gradle初探(三):发布项目到Nexus资源库的相关文章

Gradle初探

(一):创建一个Gradle项目 1. 环境准备 1.1. 先上Gradle官网下载最新版的程序,地址:https://gradle.org/gradle-download/. 1.2. 配置环境变量 GRADLE_HOME:值为gradle根目录路径,并在PATH中添加 "%GRADLE_HOME%\bin" 1.3. 配置IDE工具的Gradle环境 这里我使用IDEA进行创建(eclipse应该也有对应的gradle插件). 首先在IDEA的settings中找到Gradle选项

使用Gradle发布项目到JCenter仓库 (转载)

原文:使用Gradle发布项目到JCenter仓库 这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,方便你我他的事情,我们都是很懒的嘛.JCenter现在是Android Studio中repositories的默认节点了,之前是Maven的,不过JCenter是兼容Maven的,所以放心使用.步骤基本是按Publishing Gradle Android Library to jCenter Repository这里来的,英文能看的直接看这篇也行.下面我的步骤正式开始,发

EF6.0+APS.NET MVC5.0项目初探三(code first实体映射到数据库)

到这里架构就搭建完了,该向里面填充东西的时候了,如上篇:EF6.0+APS.NET MVC5.0项目初探二(类库引用关系及说明) 第一步 :在需要添加EF的类库Domain.DbContext上右击->管理NuGet程序包->找到Entity FrameWork下载安装. 如图: 第二步:新建DbContext 第三步:在类库Domain.Entity上添加引用System.ComponentModel.DataAnnotations(用于验证的引用) 并新建实体类. 1 using Syst

使用Gradle发布项目到JCenter仓库

转:http://www.jcodecraeer.com/a/anzhuokaifa/Android_Studio/2015/0227/2502.html 编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! 原文:使用Gradle发布项目到JCenter仓库 这篇文章介绍通过Gradle把开源项目发布到公共仓库JCenter中,方便你我他的事情,我们都是很懒

Gradle在大型Java项目上的应用

在Java构建工具的世界里,先有了Ant,然后有了Maven.Maven的CoC[1].依赖管理以及项目构建规则重用性等特点,让Maven几乎成为Java构建工具的事实标准.然而,冗余的依赖管理配置.复杂并且难以扩展的构建生命周期,都成为使用Maven的困扰. Gradle作为新的构建工具,获得了2010 Springy大奖,并入围了2011的Jax最佳Java技术发明奖.它是基于Groovy语言的构建工具,既保持了Maven的优点,又通过使用Groovy定义的DSL[2],克服了 Maven中

使用Gradle推送SpringBoot项目源码到私有仓库

应用场景: 在SpringCloud微服务项目中,通常会划分成多个业务服务,而这些服务之间一般会使用Feign组件进行相互调用,所以在项目开发中会衍生出一个问题:Feign客户端代码该由服务调用方的开发人员编写还是服务提供方的开发人员编写? 服务调用方编写:开发人员A需要开发人员B提供一个接口,开发人员B写好接口后,将URL.参数.方法名等告诉开发人员A或者直接点,直接写好代码发给对方,开发人员A再拿A给的代码写进项目里 => 开发流程不够规范.后期不便维护,如果开发人员B修改了接口的URL或其

Tomcat发布项目但是webapps下没反应

1.问题 项目发布了但是webapps下面什么都没有 2.原因 大多是Tomcat的路径设置不对 3.解决 第一步:关掉服务器 第二步:把项目从tomcat下面delete,然后再 publish 第三步:参照下图看Server Locations和Server Options对不对.即可 Tomcat发布项目但是webapps下没反应,布布扣,bubuko.com

【转】.NET Core基于. csproj 配置文件发布项目

一.前言 .NET工具链在最新的Preview3版本中,引入了新的MSBuild项目系统,项目文件又回归了.csproj的XML文件来管理,项目文件.包引用.程序集引用..NET Core工具集.发布内容定义等内容.本文主要将主要讨论,如何在新的项目系统中(.csproj)发布可执行文件.我们都知道在之前的版本中,项目文件是通过project.json文件来管理项目和包引用的,那么通过删除 dependencies->Microsoft.NETCore.App-> "type&quo

【无私分享:ASP.NET CORE 项目实战(第十章)】发布项目到 Linux 上运行 Core 项目

目录索引 [无私分享:ASP.NET CORE 项目实战]目录索引 简介 ASP.Net Core 给我们带来的最大的亮点就是跨平台,我在我电脑(win7)上用虚拟机建了个 CentOS7 ,来演示下,我们windows上的项目如何发布项目到Linux上运行.我这里有个在windows上搭建过的程序,我们主要演示如何在linux上运行,所以大家不要纠结于这些,大家可以新建一个web项目尝试一下. 安装.NET Core SDK for CentOS 微软有详细的安装命令,可以参考Install