Artifactory搭建指南

缘由

由于公司内网无法访问外网,内网内的小伙伴经常需要到上网区去升级和拉取依赖特别不方便,所以考虑搭建一套公司内网maven服务,主要目的是代理外网的jcenter和google仓库,达到内网无访问构建。

准备

安装

1、安装Java

Artifactory依赖Tomcat服务,所以毫无疑问需要服务器安装了Java8,所以无论如何,先确保已经正确安装Java。

2、下载Artifactory

https://www.jfrog.com/open-source/下载到最新的Artifactory,将zip包解压后移动某个目录下:

sudo mv artifactory* /Applications/artifactory

3、安装artifactory

一般按照官网指引的安装即可,但我这边是在一台iMac上安装,按照官网指引的一键安装脚本无法安装成功,需要手工安装。
1)配置JAVA_OPTIONS,进入目录/bin/artifactory.default

    #!/bin/sh
    #Default values
    export ARTIFACTORY_HOME=/Applications/artifactory
    export ARTIFACTORY_USER=artifactory
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

    export TOMCAT_HOME=$ARTIFACTORY_HOME/tomcat
    export ARTIFACTORY_PID=$ARTIFACTORY_HOME/run/artifactory.pid

    export JAVA_OPTIONS="-server -Xms512m -Xmx2g -Xss256k -XX:+UseG1GC -XX:OnOutOfMemoryError=\"kill -9 %p\""
    export JAVA_OPTIONS="$JAVA_OPTIONS -Djruby.compile.invokedynamic=false -Dfile.encoding=UTF8 -Dartdist=zip -Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true -Djava.security.egd=file:/dev/./urandom"

    # Timeout waiting for artifactory to start
    # START_TMO=60   

2)以后台服务运行

    sudo ./artifactoryctl start

3)加入开机启动

由于MacOS系统可以通过添加plist文件的方式加入开机启动项,所以拷贝下面的代码并重命名为 xxx.plist
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  <plist version="1.0">
  <dict>
      <key>Label</key>
    <string>jfrog.artifactory</string>
    <key>WorkingDirectory</key>
    <string>/Applications/artifactory</string>
    <key>Program</key>
    <string>/Applications/artifactory/bin/artifactory.sh</string>
    <key>KeepAlive</key>
    <true/>
    <key>EnvironmentVariables</key>
    <dict>
         <key>JAVA_HOME</key>
         <string>/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home</string>
    </dict>
  </dict>
  </plist>

4、配置Tomcat路径

按照以上步骤,基本上已经创建成功,但需要访问的路径为 http://127.0.0.1:8081/artifactory/ 这样的路径很奇怪,看着也不舒服,我们可以通过配置Tomcat来去掉artifactory,打开文件根目录下的 /tomcat/conf/server.xml

<Server port="8015" shutdown="SHUTDOWN">

    <Service name="Catalina">
        <Connector port="8081" sendReasonPhrase="true"/>

        <!-- Must be at least the value of artifactory.access.client.max.connections -->
        <Connector port="8040" sendReasonPhrase="true" maxThreads="50"/>

        <!-- This is the optional AJP connector -->
        <Connector port="8019" protocol="AJP/1.3" sendReasonPhrase="true"/>

        <Engine name="Catalina" defaultHost="localhost">
            <Host name="localhost" appBase="webapps" startStopThreads="2">
                //此处为设置容器路径,去掉artifactory
                <Context path="" docBase="artifactory" reloadable="true" />
            </Host>
        </Engine>
    </Service>

</Server>

至此安装结束,接下来登录并配置maven仓库

配置

一般我们搭建maven目的是为了代理无法访问的远程中央仓库,但同时由于可能会有其他仓库也需要代理,这时候就用到Artifactory的虚拟仓库了。

Artifactory搭建指南

虚拟仓库的目的是把一组仓库合并成一个虚拟的,例如本地有一些内网的仓库,还有一些第三方公司的仓库,还有一些google的仓库,等等都可以加入到虚拟仓库中,这样下次访问的时候,只留一个目录即可。

Artifactory搭建指南

我目前代理的几个地址:

具体配置过程很简单,就不介绍了,至此配置结束。

使用

在需要使用的地方,打开Android工程的根目录,找到build.gradle文件,然后在repositories添加自定义的仓库地址即可。

Artifactory搭建指南

愉快的开发吧 :)

标签:jcenter, maven, 仓库, artifactory