注意: Apache Archiva 2024-02 开始已经停止维护 建议使用 JFrog Artifactory 替代。
简介
Apache Archiva
是一套可扩展的Artifact Repository
管理系统。它能够与Maven
,Continuum
和ANT
等构建工具完美结合。Archiva
提供的功能包括:远程Repository
代理,基于角色的安全访问管理,Artifact
分发、维护、查询,生成使用报告,提供基于Web
的管理界面等。 本来是Sonatype Nexus
更加方便的,但是可惜最新的版本不支持在Tomcat
中使用了,因此只能转而使用Apache Archiva
。
操作步骤
1.下载Apache Archiva
去Apache
官方网站下载,下载其中的War
包。如下图: 也可以在本站下载. 具体的命令如下:
1 2 3 4 5 |
$ wget https://www.mobibrw.com/wp-content/uploads/2016/07/apache-archiva-2.2.1.war_.zip $ unzip apache-archiva-2.2.1.war_.zip $ sudo mv apache-archiva-2.2.1.war /var/lib/tomcat7/webapps/archiva.war |
2.下载Apache Archiva
依赖的Jar包
Apache Archiva
需要依赖derby-10.10.1.1.jar
(或更高版本)(org.apache.derby:derby:10.10.1.1
), activation-1.1.jar
(javax.activation:activation:1.1
),mail-1.4.jar
(javax.mail:mail:1.4.7
).可以在MVN Repository官网下载。也可以在本站打包下载。 下载完成后,需要放到Tomcat
的安装目录下面的lib
目录下。 具体的命令如下:
1 2 3 4 5 6 7 8 9 |
$ wget https://www.mobibrw.com/wp-content/uploads/2016/07/ArchivaArchiveJars.zip $ unzip ArchivaArchiveJars.zip $ sudo mv activation-1.1.jar /usr/share/tomcat7/lib $ sudo mv derby-10.10.1.1.jar /usr/share/tomcat7/lib $ sudo mv mail-1.4.7.jar /usr/share/tomcat7/lib |
3.配置Apache Archiva
(1)停止Tomcat
,后续的操作是先关闭Tomcat
为前提的。
1 |
$ sudo service tomcat7 stop |
(2)把下载到的apache-archiva-2.2.1.war
重命名成archiva.war
然后放到Tomcat
安装目录下的webapps
目录下面。
1 2 3 4 5 |
$ wget https://www.mobibrw.com/wp-content/uploads/2016/07/apache-archiva-2.2.1.war_.zip $ unzip apache-archiva-2.2.1.war_.zip $ sudo mv apache-archiva-2.2.1.war /var/lib/tomcat7/webapps/archiva.war |
(3)在Tomcat
的配置文件中增加两项appserver.home
,appserver.base
,两者都指向相同的目录即可,本例中,都指向了/data/Archiva
这个目录。
1 2 3 |
$ mkdir /data/Archiva $ sudo vim /usr/share/tomcat7/bin/setenv.sh |
在脚本的第一行执行代码中增加如下内容:
1 |
export CATALINA_OPTS="-Dappserver.home=/data/Archiva -Dappserver.base=/data/Archiva" |
注意:不要直接修改catalina.sh
这个文件,原因在于这个文件每次更新都可能会被替换掉,环境变量的设置都应该在setenv.sh
中设置。
注意catalina.sh
这个文件中的如下注释:
1 2 |
# Do not set the variables in this script. Instead put them into a script # setenv.sh in CATALINA_BASE/bin to keep your customizations separate. |
(4)由于Apache Archiva 2.2.1
的BUG
,他没有自动创建必须的目录,导致如果这个目录不存在会初始化失败。因此我们需要手动创建这些目录。
1 2 3 4 5 6 7 |
$ mkdir /data/Archiva/conf $ mkdir /data/Archiva/derby $ mkdir /data/Archiva/logs $ chown -R tomcat7:tomcat7 /data/Archiva/ |
(5)在Tomcat
的配置目录下的Catalina\localhost
目录下面创建一个名为archiva.xml
的配置文件.
1 |
$ sudo vim /etc/tomcat7/Catalina/localhost/archiva.xml |
里面的内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?xml version="1.0" encoding="UTF-8"?> <Context path="/data/Archiva/derby" docBase="${catalina.base}/webapps/archiva.war"> <Resource name="jdbc/users" auth="Container" type="javax.sql.DataSource" username="sa" password="" driverClassName="org.apache.derby.jdbc.EmbeddedDriver" url="jdbc:derby:/data/Archiva/derby/db;create=true" /> <Resource name="mail/Session" auth="Container" type="javax.mail.Session" mail.smtp.host="localhost"/> </Context> |
注意其中的Context path
为数据库相关配置文件所在的路径,包含配置,数据库等等很多文件,url
为数据库的具体存储目录,仅仅包含数据库数据。 注意:Ubuntu
系统下面CATALINA_HOME
指向/usr/share/tomcat7
,而CATALINA_BASE
指向/var/lib/tomcat7
(6)启动或者重启Tomcat
,等待几分钟之后,即可成功配置完成。
1 |
$ sudo service tomcat7 start |
如下图: 注意,如果在最后一步发生失败,那么我们需要删除/data/Archiva
这个目录,以及Tomcat
安装目录下面的webapps\archiva
这两个目录,原因是在配置过程中修改了部分文件,如果不删除这几个文件,会导致各种异常。
注意,上图中的"Create Admin User
"按钮,当创建用户的时候,貌似用户名是可以不用"admin
"的,但是,实际上,管理员的用户名是不变的,不管你输入什么,最后登陆的时候填写的用户名,永远必须是"admin
",否则会一直提示用户名或密码不正确。
注意,如果使用Apache Httpd
(Apache 2.x
)作为前端代理Tomcat
的情况下部署Apache Archiva
,并且使用AJP
(Apache JServ Protocol
)的方式进行通信,那么在配置Apache Httpd
(Apache 2.x
)的配置文件的时候,里面写入的名字必须严格跟Tomcat中部署的名字一致,比如,如果Tomcat配置的时候是archiva
,那么在Apache Httpd
(Apache 2.x
)的配置文件中,也必须使用archiva
,不能像其他简单项目一样进行命名重定向。如下:
1 |
$ sudo vim /etc/apache2/sites-available/000-default.conf |
里面增加的AJP
代理信息如下:
1 2 3 4 5 6 |
#for Apache Archiva #此处的名字不可改变,对于Apache Archiva,由于他会进行304重定向,因此 #如果这里的名字跟Tomcat中部署的如果不同名,那么会出现登陆后无法进入控制 #页面的问题 ProxyPass /archiva/ ajp://127.0.0.1:8009/archiva/ ProxyPassReverse /archiva/ ajp://127.0.0.1:8009/archiva/ |
更详细的配置说明,参考 Ubuntu 13.10 Apache 2.2 通过 AJP 整合 Tomcat 7
客户端配置
在客户机上找到.m2
所在的目录,找到settings.xml
这个配置文件,如果不存在,则手工创建,里面的默认内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/> <interactiveMode/> <usePluginRegistry/> <offline/> <pluginGroups/> <servers/> <mirrors/> <proxies/> <profiles/> <activeProfiles/> </settings> |
在其中的mirrors
中间增加如下内容:
1 2 3 4 5 6 |
<mirror> <id>internal</id> <name>Archiva Managed Internal Repository</name> <url>http://www.mobibrw.com/archiva/repository/internal</url> <mirrorOf>*</mirrorOf> </mirror> |
修改后的内容变成如下样子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <localRepository/> <interactiveMode/> <usePluginRegistry/> <offline/> <pluginGroups/> <servers/> <mirrors> <mirror> <id>internal</id> <name>Archiva Managed Internal Repository</name> <url>http://www.mobibrw.com/archiva/repository/internal</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> <proxies/> <profiles/> <activeProfiles/> </settings> |
目前使用的时候,发现,在Apache Archiva
刚刚配置完成后,是没办法进行访问的,这个时候一切都返回404
,等服务器启动几个小时之后,从中央服务器同步完成数据了,就可以进行访问了,这个问题纠结了好久,最后发现只要等待就可以了,不知道是不是一个通病。
另外就是,在Apache Archiva
的搜索页面中使用Search
,如果是第一次使用,会发现搜索任何包都提示找不到,原因是因为在设计的时候,只搜索本地已经下载过的包,而在中央仓库中的包是不搜索的,因此会一直提示找不到任何包,只要有任何的客户端调用过,那么就可以在搜索页中找到了,这个问题不必纠结。