精华内容
下载资源
问答
  • 自建 Maven 仓库

    2019-10-20 11:05:15
    自从公司使用 Maven 仓库管理代码后,一直想着有一个自己的代码仓库。虽然写的代码不多,但是不影响 Get 一项新技能。 1. 集成 Maven 由于本人是做 Android 开发,于是通过集成 Maven 的 Gradle 插件,生成对应的 ...

    0. 前言

    自从公司使用 Maven 仓库管理代码后,一直想着有一个自己的代码仓库。虽然写的代码不多,但是不影响 Get 一项新技能。

    1. 集成 Maven

    由于本人是做 Android 开发,于是通过集成 Maven 的 Gradle 插件,生成对应的 aarjar 库。

    在 Module 的 build.gradle 中,集成配置如下:

    // 使用 Maven 插件
    apply plugin: 'maven'
    
    // 远程库名称通常由三部分构成 ,groupId:artifactId:version
    // 定义 group
    group = 'com.flueky'
    // 定义 version
    version = '1.0.0' // 指定版本
    // artifactId 默认使用 module name
    
    // 以上两个配置也可以在下面的 deployer 中定义
    
    // 下面定义三种不同的 maven 仓库地址
    // 1. 计算机中,用户目录下
    def localMavenRepo = 'file://' + new File(System.getProperty('user.home'), '.m2/repository').absolutePath
    // 2. 工程目录下 等同 uri('../repository')
    def projectMavenRepo = 'file://' + rootDir.getAbsolutePath() + '/repository' 
    // 3. 自建的 Maven 私服上
    def nexusMavenRepo = 'http://127.0.0.1:9000/repository/android/'
    // 下面是 Maven 私服的用户名和密码,上传时需要
    def nexusUserName = 'admin'
    def nexusPassword = 'admin123'
    
    uploadArchives {
        repositories.mavenDeployer {
            // 指定导出到的仓库地址,三个任选一个
            repository(url: localMavenRepo)
            repository(url: projectMavenRepo)
            repository(url: nexusMavenRepo) {
                // 需要授权用户名和密码
                authentication(userName: nexusUserName, password: nexusPassword)
            }
            // 下面三个定义的常量可以复写上面已定义的值
            pom.groupId = "com.flueky"// 唯一标识(通常为模块包名,也可以任意)
            pom.artifactId = "maven-test" // 项目名称(通常为类库模块名称,也可以任意)
            pom.version = "1.0.0" // 版本号
        }
    }
    

    配置好上述代码后,生成 aarjar 是由 Module 类型决定。

    // 生成 aar
    apply plugin: 'com.android.library'
    // 生成 jar
    apply plugin: 'java'
    

    已本地私服为例,最终导出的远程库结构如下:

    2. 导出到 Maven

    配置完成后,即可在 Gradle 任务中查看。

    点击 uploadArchives 即可完成导出。之后在对应的目录下查看。

    3. 使用 Maven 仓库

    针对前面配置的三种仓库地址,使用时需要分别作配置。

    allprojects {
        repositories {
            // 本地仓库
            mavenLocal()
            // 本地服务器
            maven {
                // 如果 nexus 私服具备匿名访问权限,无须配置用户名密码,
                // 具备上传权限的用户名和密码通常不开放使用。
                credentials {
                    username "flueky"
                    password "123456"
                }
                url 'http://127.0.0.1:9000/repository/android/'
            }
            // 工程目录仓库
            maven { url 'file://' + rootDir.getAbsolutePath() + '/repository/' }
        }
    }
    

    最后添加依赖。

    dependencies {
        implementation 'com.flueky:maven-test:1.0.0'
        implementation 'com.flueky:lib-test:1.0.0'
    }
    

    最后,如何搭建 Maven 私服,没做介绍,主要是我也才上手,搭建私服,推荐使用 nexus 。

    源码地址

    觉得有用?那打赏一个呗。[去打赏]({{ site.url }}/donate/)

    展开全文
  • 自建私有 Maven 仓库

    千次阅读 2016-09-01 17:32:27
    私有 Maven 还会产生另一个好处,就是代理中央 Maven 仓库。例如,我们新加入了一个第三方库,导致每个人的 IDE 都需要从中央 Maven pull 库,而中国 GFW 的存在,导致中央 Maven 极其不稳定,经常 time out ,有了...

    项目组从2015年上半年全面切换到 AndroidStudio 进行开发,随着这1年多业务逻辑和代码逻辑的增长,导致项目 LibraryModule 由最初的3个增长到如今的8个。

    代码量的增加必然导致编译的变慢,AndroidStudio 在编译项目时会先编译 LibraryModule 生成 aar 包,之后这些 aar 包会和 APPModule 进行集成编译,最终生成 APK。这个编译过程,第一次在5.0及以上手机安装,经常会出现6分钟以上的编译时间,5.0以下手机也有3分钟左右的编译时间,这些时间严重影响了工作效率!

    考虑到 LibraryModule 是长期不会修改的代码,如果发布成 aar 加入到项目里,就可以节省下每次 Module 编译的时间。

    如果能够像 compile 第三方 Library 那样引用我们的 Library ,岂不是又降低 Module 的耦合,又单独对 Library 增加了版本控制。第三方 Library 基本都是把 aar 发布到中央 Maven 对外提供引用,而我们的 Library 作为公司的商业项目,是不可能发布到中央 Maven 对外提供引用的,这就要求我们需要有自己的 Maven 服务。

    私有 Maven 还会产生另一个好处,就是代理中央 Maven 仓库。例如,我们新加入了一个第三方库,导致每个人的 IDE 都需要从中央 Maven pull 库,而中国 GFW 的存在,导致中央 Maven 极其不稳定,经常 time out ,有了代理 Maven,只要代理 maven pull 一次库,每个人就不必从中央 Maven pull库了。

    这里我们是用 Docker 作为容器,在里面搭建的 Sonatype Nexus 私有 Maven 仓库。使用 Docker 的好处是可以把环境独立出来不会和服务器其他服务产生冲突,卸载也简单。

    安装 Docker 并运行 Nexus

    1,下载 并安装 Docker,传送门

    2,在 Terminal 中输入docker -v,如果显示版本号,说明安装后环境是没有问题的,如下是我显示的版本号:
    Docker version 1.12.0, build 8eab29e

    3,在 Terminal 输入docker pull sonatype/nexus进行下载 nexus 镜像。
    下载过程中,会显示下载进度。如果比较慢或者超时,请在 Docker 里设置 mirror。如下图,我配置了灵雀加速和阿里云加速。

    这里写图片描述
    灵雀加速:http://houchaohann.m.alauda.cn
    阿里云加速:https://3wky8dz8.mirror.aliyuncs.com

    下载成功后显示如下图:

    4,在 Terminal 中输入docker run -d -p 8081:8081 --name yiche sonatype/nexus:oss来创建一个名叫 yiche 的容器,占用端口8081。

    这里写图片描述

    5,在 Terminal 中输入docker ps -a查看容器

    这里写图片描述

    6,浏览器里输入http://localhost:8081/,如果显示如下界面,证明 Nexus 搭建成功。

    这里写图片描述

    7,一些常用指令:
    docker start yiche开始运行yiche 容器
    docker restart yichec运 重新行yiche容器
    docker stop yiche停止运行yiche容器
    docker rm yiche删除yiche容器

    Nexus 使用

    点击右上角login登录,默认账户admin,默认密码admin123

    点击左侧栏目的Repositories,显示Nexus 默认已经有的仓库,如下图:

    这里写图片描述

    创建一个私有仓库

    1,点击add,选择Hosted Repository

    2,在下方输入Repository IDRepository Name,这里我分别输入的是demoDemo,这里可以换成你自己的。

    3,部署策略Deployment Policy选择为Allow Redeploy允许重新部署。

    4,点击save保存,在上方列表中就会显示完成的仓库信息,最后一列Repository Path就是仓库的地址。

    如下图:
    这里写图片描述

    注:如果在Repository Policy选择snapshot,仓库就是快照版仓库。

    代理仓库

    这里我是代理的 jcenter,因为这是 Android Studio 的默认仓库。

    1,点击add,选择Proxy Repository

    2,在下方输入Repository IDRepository Name,这里我分别输入的是jcenterJcenter,因为代理的就是 jcenter 哈。

    3,在Remote Storage Location输入代理仓库的仓库地址http://jcenter.bintray.com/

    4,点击save保存,在上方列表中就会显示完成的仓库信息,最后一列Repository Path就是仓库的地址。

    如下图:
    这里写图片描述

    其实在我们项目里并没有新创建一个仓库,而是直接用的默认ReleaseSnapshot

    这里写图片描述

    Android Studio 中上传 Library Module 到私有 maven

    上传到 Maven

    因为,Module比较多,我在项目根目录里写了一个 gradle 文件gradle_mvn_push.gradle来上传。代码如下:

    apply plugin: 'maven'
    //release 地址
    def RELEASE_REPOSITORY_URL = "http://192.168.4.53:32770/content/repositories/releases/"
    //snapshots 地址
    def SNAPSHOT_REPOSITORY_URL = "http://192.168.4.53:32770/content/repositories/snapshots/"
    //判断 VERSION_NAME 如果以`-SHAPSHOT`结尾,则上传地址为 snapshot 地址
    def REPOSITORY_URL = VERSION_NAME.endsWith("-SNAPSHOT") ? SNAPSHOT_REPOSITORY_URL : RELEASE_REPOSITORY_URL;
    
    logger.info("groupId = %s\t\nartifactId = %s\t\nversion = %s\t\nrepository = %s\t\n", GROUP, POM_ARTIFACT_ID, VERSION_NAME, REPOSITORY_URL)
    
    afterEvaluate { project ->
        uploadArchives {
            repositories.mavenDeployer {
                pom.groupId = GROUP
                pom.artifactId = POM_ARTIFACT_ID
                pom.version = VERSION_NAME
                repository(url: REPOSITORY_URL) {
                    authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD)
                }
            }
        }
        task androidSourcesJar(type: Jar) {
            classifier = 'sources'
            from android.sourceSets.main.java.sourceFiles
        }
    
        artifacts {
            archives androidSourcesJar
        }
    }

    然后在你要上传 module 的build.gradle 文件引入。
    如下图是我们换肤 Module 的 build.gradle

    apply plugin: 'com.android.library'
    
    android {
        compileSdkVersion Integer.valueOf(COMPILE_SDK_VERSION)
        buildToolsVersion BUILD_TOOLS_VERSION
    
        defaultConfig {
            minSdkVersion MIN_SDK_VERSION
            targetSdkVersion TARGET_SDK_VERSION
            versionCode 1
            versionName "1.0"
        }
        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
    }
    
    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile SUPPORT_APPCOMPAT_V7
        compile SUPPORT_CARDVIEW_V7
    }
    
    ext.GROUP="com.yiche"
    ext.VERSION_NAME="1.1.0-SNAPSHOT"
    ext.POM_ARTIFACT_ID="changeskin"
    
    apply from: "${project.rootDir}/gradle_mvn_push.gradle"

    这里请关注下面的代码,GROUPVERSION_NAMEPOM_ARTIFACT_ID和最后一行引入我们前面写的gradle_mvn_push.gradle

    GROUP一般代表了你的组织名称,例如我的com.yiche
    POM_ARTIFACT_IDLibrary 的简称。
    VERSION_NAME版本号,如果有-SNAPSHOT表示是快照版。

    上面这三个也就组成了我们平常看见的引依赖 com.yiche:changeskin:1.1.0-SNAPSHOT

    引用私有 Maven

    下面就直接上一段代码吧,这是项目根目录的build.gradle里面修改了 maven 仓库的地址。

    // Top-level build file where you can add configuration options common to all sub-projects/modules.
    buildscript {
        repositories {
            jcenter()
        }
    
        dependencies {
            classpath 'com.android.tools.build:gradle:2.1.3'
        }
    }
    
    allprojects {
    
        repositories {
    //        jcenter()
            // 私有 release 地址
            maven{
                url "http://192.168.4.53:32770/content/repositories/releases/"
            }
            // 私有 snapshot 地址
            maven{
                url "http://192.168.4.53:32770/content/repositories/snapshots/"
            }
            //jcenter 代理
            maven{
                url "http://192.168.4.53:32770/content/repositories/jcenter/"
            }
            // maven 代理
            maven{
                url "http://192.168.4.53:32770/content/repositories/central/"
            }
        }
    }
    
    task clean(type: Delete) {
        delete rootProject.buildDir
    }
    

    好的,到这里就算结束了,后面这部分写的比较少,有问题留言啦。

    展开全文
  • maven自建仓库 Return code : 405

    千次阅读 2016-07-06 08:57:00
    maven自建仓库jar包上传: jar包上传可以采用在自建仓库上系统上传以及通过配置maven setting.xml以及pom.xml上传。 maven通过配置上传需要用户名密码以及maven仓库位置配置。 遇到的一些问题记录如下 其中...

       maven自建仓库jar包上传:

       jar包上传可以采用在自建仓库上系统上传以及通过配置maven setting.xml以及pom.xml上传。

       maven通过配置上传需要用户名密码以及maven仓库位置配置。

       遇到的一些问题记录如下

       其中Return code : 405为路径配置错误,maven路径包含两部分一部分是下边url

      <distributionManagement>
      <repository>
      <id>snapshots</id>
      <name>libs-snapshots</name>
      <url>http://artifactory.test-develop.com/libs-snapshots</url>
      </repository>
      </distributionManagement> 

      以及使用的时候下边groupId、artifactId、version

      <dependency>
      <groupId>com.test</groupId>
      <artifactId>findgoods-common</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      </dependency>

      最终在maven自建仓库的位置应该可以找到

      http://artifactory.test-develop.com/libs-snapshots/com/test/findgoods-common/1.0.0-SNAPSHOT/

      发生405问题如上述解决就可以

      其他问题可以参考

      http://maishj.iteye.com/blog/2153092

     

    转载于:https://www.cnblogs.com/freedommovie/p/5645704.html

    展开全文
  • 1,如何离线下载MAVEN所有中央仓库JAR包 2,如何搭建本地MAVEN仓库,并导入离线下载的中央jar包 ...3,如何设置调用自建服务器MAVEN Jar包~~ 网上各种攻略尝试 主要nexus搭配maven 但都不是很奏效 谢谢~~
  • maven本地仓库配置

    万次阅读 多人点赞 2019-05-11 18:50:24
    来配置一下maven本地仓库: 第一步:下载到官网下载maven包。下载地址:http://maven.apache.org/download.cgi 第二步:找个盘符创建个文件夹将将下载的maven报放进去,然后将下载的包解压了。 第三步:配置MAVEN...

    来配置一下maven本地仓库:

    第一步:下载到官网下载maven包。下载地址:http://maven.apache.org/download.cgi

    第二步:找个盘符创建个文件夹将将下载的maven报放进去,然后将下载的包解压了。

    第三步:配置MAVEN_HOME的环境变量。如下:

    注意这个地方的变量值的路劲是你自己的实际maven解压后的路径。

    配置完上面的了,将MAVEN_HOME配置到Path变量中。如下:

    • MAVEN_OPTS = -Xms128m -Xmx512m(可选)

    • 在path变量末尾加入“;%MAVEN_HOME%\bin;”

    好了到这maven的基本配置就结束了。

    第四步:到Windows中的dos命令中验证一下配置的是否准确。输入mvn -v

    如果出现一下信息就说明配置成功:

    第五步:配置本地仓库:

    使用 Maven 给我们带来的最直接的好处,就是统一管理jar 包,那么这些 jar 包存放在哪里呢?它们就在您的本地仓库中,默认地址位于 C:\Users\用户名.m2 目录下(当然也可以修改这个默认地址),下面我们就修改一下这个默认地址。

    实际上我们可以将本地仓库理解“缓存”,目的是存放jar包。开发项目时项目首先会从本地仓库中获取 jar 包,当无法获取指定 jar 包的时候,本地仓库会从 远程仓库(或 中央仓库) 中下载 jar 包,并“缓存”到本地仓库中以备将来使用。

    远程仓库(中央仓库)是 Maven 官方提供的,可通过 http://search.maven.org/ 来访问。这样一来,本地仓库会随着项目的积累越来越大。通过下面这张图可以清晰地表达项目、本地仓库、远程仓库之间的关系。
    既然 Maven 安装了,那么本地仓库也就有了,默认路径在我们C盘目录下。这里不建议放到C盘,那么如何修改这个默认配置呢。
    打开maven安装目录\conf\setting.xml文件。我自己的路径:E:\maven_3.6.1\apache-maven-3.6.1\conf

    那么默认的本地仓库位置已经修改为E:\maven_Resporty目录了。
    最好先手动创建好该目录。

    最后检查一下配置是否正确。输入命令:mvn help:system

    最后如果没有报错就说明配置好了。然后你会发现你自己建的maven仓库的文件夹下会有很多的文件包自动出来。这些就是maven从中央仓库下载下来的文件了。

    展开全文
  • maven搭建私有仓库过程记录

    千次阅读 2019-08-14 15:51:46
    一、下载maven https://maven.apache.org/download.cgi 二、下载nexus 百度网盘地址:https://pan.baidu.com/s/1hr4yG0c 三、安装maven 1.1 将文件解压到D:\apache-maven-3.5.4目录下: 1.2 新建环境变量...
  • Idea Maven 本地仓库-导入本地JAR包 需求 因公司近期准备封闭式开发环境,断网情况下,jar包改为引用本地jar包,所以现在建立本地仓库导入本地jar包 实现 找到Idea的安装目录下面的Maven,我的在 C:\Program Files...
  • 本地仓库资源压缩包,创建maven需要一个本地仓库,就是一个文件夹,然后把资源压缩包解压后放在里面就行了。
  • 用过Maven的都知道Maven的方便便捷,但由于某些网络原因,访问国外的Maven仓库不便捷,好在阿里云搭建了国内的maven仓库。需要使用的话,要在maven的settings.xml 文件里配置mirrors的子节点,添加如下mirror:  ...
  • 5.IDEA使用本地仓库 1.首先上maven官网下载自己需要的安装包 maven官网 2. 创建一个maven文件夹 将下载好的安装包解压到maven文件夹中,并将创建repository文件夹和解压好的maven文件在同一级目录,之后将maven...
  • Maven远程依赖仓库的配置及部署

    千次阅读 2019-08-19 09:00:18
    配置远程库 <repositories> <repository> <id>lifeng</id> <name>Lifengs Repository</name> <url>http://repository.jboss.com/maven2/&l...
  • 打开详情,这里能看到这个仓库的信息,只需要这个路径就好了 创建完了,把它加入到maven-public组中 这样,这个仓库就可以使用了,打开maven的settings.xml文件,增加servers节点 > > >dlanqi.core> >admin> >*****...
  • 配置 Maven 依赖包仓库
  • 一、概述 在实际业务开发中,可能会遇见很多通用...这种时候,要是有一个自由Maven仓库就好了!(当然,Github也欢迎你的轮子) 本文就介绍通过 Artifactory 傻瓜式快速搭建Maven仓库。 在简短的几个步骤后,就有了一...
  • 别再自建仓库了,云效Maven仓库不限容量免费用,云效制品仓库 Packages提供maven私有仓库、npm私有仓库、通用制品仓库等企业级私有制品仓库,用于maven、npm等软件包和依赖管理。不限容量、免费用 不限容量、免费...
  • 搭建maven本地仓库

    万次阅读 多人点赞 2018-06-16 00:25:54
    以前的项目都是直接pom.xml引入,没有搭建过本地的maven仓库,正好趁着这次机会试着搭建一下。 安装maven之前,首先应该确保装好了jdk。maven3对应jdk1.7以上的版本。我自己的jdk是1.8的,登陆maven的官网,选择...
  • Maven创建本地仓库

    2020-05-21 11:17:45
    Maven创建本地仓库 一般我们使用maven仓库的时候都是默认的C盘中的.m2,但是如果把所有的jar包都下载到C盘中必定会造成电脑卡顿现象,所以我们就有必要创建一个自己的maven本地仓库。 第一步 在除过C盘里的任意一个...
  • 配置Maven代理仓库和中央仓库同步

    千次阅读 2019-05-17 19:35:06
    文章目录配置Maven代理仓库和中央仓库同步参考文档Maven仓库类型配置Maven代理仓库和阿里云Maven仓库同步创建阿里云proxy仓库添加仓库仓库组设置HTTP和HTTPS代理配置`settings.xml`来使用Nexus私服 配置Maven代理...
  • 如何创建自己的maven仓库

    万次阅读 2018-03-31 11:51:16
    1.首先,配置好Maven,jdk等必备环境2.配置好环境后,下载最新版本的nexus下载地址:http://www.sonatype.org/nexus/go3.打开目录nexus-***\bin\jsw这个文件夹下面有适配各种平台的nexus服务配置工具。大家可以根据...
  • 使用Github搭建Maven私有远程仓库

    千次阅读 2019-04-22 21:40:06
    本文由黑壳博客编写 本文来源使用Github搭建Maven私有远程仓库 本文借鉴此文两篇文章,进行了一些汇总和言语不清晰的地方进行修改 https://blog.csdn.net/hengyunabc/article/details/47308913 ...
  • Maven仓库搭建

    2020-05-22 12:15:38
    一、搭建maven仓库 1、下拉一个maven镜像 docker pull sonatype/nexus3 2、启动镜像,并将容器目录 /var/nexus-data 挂载到 宿主机 /home/dockeru/maven 目录下 docker run -d -p 8081:8081 --name nexus -v /home/...
  • idea_maven项目配置默认仓库为自己的本地仓库 问题描述: 使用idea新建maven工程,maven仓库一直是默认c盘自带的仓库,想使用自己的仓库就需要每次都去修改解决方式: 设置默认配置 修改为自己的本地仓库
  • 搭建公司私有MAVEN仓库

    万次阅读 2018-03-04 23:51:39
    这里就是代理的意思,代理中央 Maven 仓库,当 PC 访问中央库的时候,先通过 Proxy 下载到 Nexus 仓库,然后再从 Nexus 仓库下载到 PC 本地。 这样的优势只要其中一个人从中央库下来了,以后大家都是从 Nexus 私服上...
  • MAVEN 私有仓库搭建与配置

    千次阅读 2020-09-28 16:45:27
    Repositories(仓库管理) maven仓库仓库 类型 描述 maven-central proxy 远程中央仓库 maven-releases hosted 私库发行仓库 maven-snapshots hosted 私库快照仓库 maven-public group 仓库组 nexus3自带的nuget...
  • Maven私有仓库使用

    2020-09-25 13:21:20
    前面有文章写到使用Nexus3搭建私有Maven私有仓库这篇文章主要简介Maven怎么使用Nexus3搭建的私有仓库,包括私有仓库类型介绍,Maven拉取私有仓库,本地jar推送私有仓库。 Nexus3配置 1.Nexus3仓库访问模式 默认的...
  • maven默认本地仓库

    千次阅读 2018-01-31 16:58:00
    本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包...
  • 如何搭建Maven仓库

    千次阅读 2019-07-07 21:41:48
    最近自学java,学到了Maven,把今天搭建Maven的过程大家分享一下,加深一下自己的印象,有初学者有不对的还请大神多多指点! 配置Maven 1.首先是下载Maven(http://maven.apache.org/download.cgi)这是Maven的下载...
  • 本地仓库是远程仓库的一个缓冲和子集,当你构建Maven项目的时候,首先会从本地仓库查找资源,如果没有,那么Maven会从远程仓库下载到你本地仓库。这样在你下次使用的时候就不需要从远程下载了。如果你所需要的jar包...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,530
精华内容 3,812
关键字:

maven自建仓库