`

使用Apache Archiva搭建Maven Repository Server

 
阅读更多
http://blog.csdn.net/ppby2002/article/details/6079394

经过这两天的研究,对比Sonatype Nexus 和 Apache Archiva,觉得Apache Archiva还不错,配置简单,好用。

以下是配置Apache Archiva的具体步骤



Apache Archiva有两种模式,独立的Repository Server和依附于App Server的war文件。

下面分别介绍



1. Standalone安装模式(WindowXP,其他操作系统同理)

1) 首先到archiva主页上下载最新版1.3.2 Standanlone

http://archiva.apache.org/download.html



2) 下载后解压,在我的机器上解压后的目录是G:/apache-archiva-1.3.2

3) 配置jdk

官方主页上支持jdk1.4,但是我直接用jdk1.6了。设置环境变量JAVA_HOME(保险起见先设置上,有兴趣的朋友可以看看不设置是否可以)



4) 启动服务

进入G:/apache-archiva-1.3.2/bin

WinXP下,启动服务前必须要把archiva加入到系统服务才可以,如下

G:/apache-archiva-1.3.2/bin>archiva.bat install

wrapper  | Apache Archiva installed.

如上输出结果表示加入成功。

启动Archiva Repository Server

G:/apache-archiva-1.3.2/bin>archiva.bat start
wrapper  | Starting the Apache Archiva service...
wrapper  | Apache Archiva started.

如上输出表示启动成功。



5) 第一次访问

在浏览器上输入

http://localhost:8080/archiva

进入到GUI界面,第一次需要输入用户名,密码,然后点击创建。



6)默认的Repository

登入后,左侧Administration栏列出了所有常用配置。

点击Reposoitory会看到archiva自带的默认internal repository 和 remote repository

internal repository表示Archive本地的repository,remote repository代表远程的repository。

当maven连接到Archiva的internal repository时,Archiva会先从本地寻找目标,找不到的话再从remote repository上继续寻找。



7) 配置文件结构

以下是几个常用的配置文件目录

%ARCHIVA_HOME%/data 数据文件根目录

%ARCHIVA_HOME%/data/database 里配置了数据库文件,包括用户数据库和系统数据库

%ARCHIVA_HOME%/data/repositories 包含索引信息。如果上传了jar等文件的话,也会保存在这里。

%ARCHIVA_HOME%/logs 存放log文件。





2. WAR安装模式(WinXP,tomcat6.x)

1) 首先到archiva主页,在历史版本里下载版1.3版的war文件。

由于1.3.2的war包含有对security的更新,访问时会导致错误

java.lang.RuntimeException: Failed referrer security check: Request did not come from the same server. Detected HTTP Referer header is 'http://localhost:8080/archiva/index.action'.
    at org.codehaus.plexus.redback.struts2.interceptor.SecureActionInterceptor.executeReferrerSecurityCheck(SecureActionInterceptor.java:234)

这个问题现在还没有解决(懒得去JIRA上提)



2) 添加war文件

在tomcat根目录下创建文件夹archiva,把war名字改成archiva.war并且拷贝到刚刚创建的archiva目录下



3) 添加tomcat配置文件

创建文件 <Tomcat_Home>/conf/Catalina/localhost/archiva.xml,并且写入以下内容

<Context path="/archiva" docBase="${catalina.home}/archiva/archiva.war">
<Resource name="jdbc/users" auth="Container" type="javax.sql.DataSource"
           username="sa"
           password=""
           driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
           url="jdbc:derby:/path/to/database/users;create=true" />
<Resource name="jdbc/archiva" auth="Container" type="javax.sql.DataSource"
           username="sa"
           password=""
           driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
           url="jdbc:derby:/path/to/database/archiva;create=true" />

<Resource name="mail/Session" auth="Container"
            type="javax.mail.Session"
            mail.smtp.host="localhost"/>
</Context>
注意,由于我使用的是tomcat6.x,所以一定要把xml头 <?xml version="1.0" encoding="UTF-8"?>去掉。

把上边蓝色的部分改成你的本地路径,比如G:/archiva_repository/database/archiva 和G:/archiva_repository/database/user

Archiva将会自动新建两个目录分别名为archiva和user,并且自动创建DB文件,这点很省心。但是要注意一定要用两个独立的目录,不然文件就乱了。



4) 拷贝运行时需要的jar到tomcat的lib目录下

derby-10.1.3.1.jar(或更高版本), activation-1.1.jar mail-1.4.jar 和



5) 更改catalina.bat文件

加入参数

set CATALINA_OPTS=-Dappserver.home=%CATALINA_HOME% -Dappserver.base=%CATALINA_HOME%

注意一定要写在正确的位置。
我为了方便,加在最后了
这是我的文件
:doneSetArgs
set CATALINA_OPTS=-Dappserver.home=%CATALINA_HOME% -Dappserver.base=%CATALINA_HOME%
rem Execute Java with the applicable properties
if not "%JPDA%" == "" goto doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end
:doSecurity
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end
:doJpda
if not "%SECURITY_POLICY_FILE%" == "" goto doSecurityJpda
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end
:doSecurityJpda
%_EXECJAVA% %JAVA_OPTS% %CATALINA_OPTS% %JPDA_OPTS% %DEBUG_OPTS% -Djava.endorsed.dirs="%JAVA_ENDORSED_DIRS%" -classpath "%CLASSPATH%" -Djava.security.manager -Djava.security.policy=="%SECURITY_POLICY_FILE%" -Dcatalina.base="%CATALINA_BASE%" -Dcatalina.home="%CATALINA_HOME%" -Djava.io.tmpdir="%CATALINA_TMPDIR%" %MAINCLASS% %CMD_LINE_ARGS% %ACTION%
goto end

:end
设置参数CATALINA_OPTS时,等号后边一定不能有双引号。
6) 启动tomcat
地址栏输入http://localhost:8080/archiva
以后的步骤同standalone模式。
注意,在war模式下,默认的data目录在tomcat根目录下,log文件保存在tomat的log目录下。
可以登陆到管理GUI界面上更改每个repository的data目录。
war模式下会在~/m2目录下自动建立一个配置文件archiva.xml

3. 配置Maven连接Apache Archive Repository Server 1) 在archive上增加项目的repository
a) 登陆Archive的GUI管理界面,左侧点击Repositories,右侧会列出可用的repository列表。
internal表示仅下载release的jar文件
b) 点击右上角“Add”,输入repository内容
ID: repository的名字,比如 lee
Name: repository描述性的名字,如 My Managed Internal Repository
Directory: 索引和上传的jar文件所在目录,如 G:/apache-archiva-1.3.2/data/repositories/lee-internal
其余默认即可,点击Update Repository按钮。
可以看到repository列表中增加了一项。
2) 增加本地的connector
connector用来作为连接的接入点,可以包括很多repository的地址,或者当上传jar文件时,作为本地缓存使用。
a) 点击左边的Proxy Connector,
b) 右侧点击 Add
Managed Repository选择刚刚创建的repository,如 lee
其余默认即可。
这样,就把远程的repository地址加入到刚刚创建的名称为lee的repository中了。

3) 增加Repository Group
Repository Group是作为一个虚拟的连接点来使用,可以在maven中作为镜像地址。
a) 在右上角Identifier里填写组的名字后,点击Add Group
b) 增加后,可以看到多了刚刚加的组。
在下边的下拉框中选择刚刚创建的repository lee
lee表示从本地名称为lee的repository里下载文件
如果需要使用代理,需要编辑lee repository,为它们添加代理。
4) 上传jar文件
a) 左侧Upload Artifact
b) 在右侧填写group id, artifact id, 等信息。repository选择新建的lee

比如填写如下
Group Id: org.lee
Artifact Id: apache
Version: 2.5
Package: jar
上传后,会在data目录下找到上传的文件。
5) 配置Maven连接的repository
虽然可以直接修改pom.xml文件来更改repository 地址,但是可重用性并不好。
建议修改~/.m2目录下的settings.xml文件
只要建立一个镜像就可以了,如下
<mirrors>
<mirror>
<id>archiva</id>
<mirrorOf>*</mirrorOf>
<url>http://127.0.0.1:8080/archiva/repository/myGroup/</url>
</mirror>
</mirrors>

6) 测试镜像
a) 建立测试类
package org.lee;
import org.apache.commons.lang.builder.ReflectionToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

/**
* Hello world!
*
*/
public class App {
private String info="My Local Test";


       public static void main( String[] args ) {
App app = new App();
System.out.println( app.toString() );
}
@Override
public String toString() {
return new ReflectionToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE).toString();
}
}

在pom.xml中增加依赖
<dependency>
<groupId>org.lee</groupId>
<artifactId>apache</artifactId>
<version>2.5</version>
</dependency>

在工程目录下运行maven命令
G:/Code/Java/LocalMavenTest/LocalMavenTest>mvn package

第一次运行会下载很多插件,都是同过镜像地址来下载,比如最后几行
.............
Downloaded: http://127.0.0.1:8080/archiva/repository/myGroup/org/codehaus/plexus/plexus-io/1.0/plexus-io-1.0.jar (0 B at 0.0 KB/sec)
Downloaded: http://127.0.0.1:8080/archiva/repository/myGroup/commons-lang/commons-lang/2.1/commons-lang-2.1.jar (0 B at 0.0 KB/sec)
[INFO] Building jar: G:/Code/Java/LocalMavenTest/LocalMavenTest/target/LocalMavenTest-0.0.1-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 39.672s
[INFO] Finished at: Tue Dec 14 17:50:41 CST 2010
[INFO] Final Memory: 3M/15M
[INFO] ------------------------------------------------------------------------
成功

如果想使用maven远程的commons-lang包,可以把依赖改成

<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.5</version>
</dependency>

补充:

对于公司内网,使用代理的情况,如果出现Access Denied错误,编辑Guest Role
User Roles -> Guest
找到User defined with the current role下的连接Guest(guest -)并点击
点击Edit Roles连接,在接下来的页面上给相关的repository赋权限,赋予Repository Observer即可。
分享到:
评论

相关推荐

    docker-archiva:Apache Archiva 的 docker 镜像

    执照: 此图像和 Apache Archiva 均受关于 Apache 归档是 maven 兼容的工件存储库,可合理配置且相当稳定。 关于xetusoss/archiva 此映像的目标是成为部署简单可靠的 Apache Archiva 版本的最简单方法。 这张图片的...

    使用Nexus搭建Maven私服

    我们使用专门的Maven仓库管理软件来完成私服的搭建,比如:Apache Archiva,Artifactory,Sonatype Nexus。下面我们重点介绍如何使用Sonatype Nexus进行私服搭建。 Nexus是一个非常强大的Maven仓库管理器,极大地...

    linux搭建maven私库所需的安装包.zip

    2. **下载Maven**:从Apache Maven官网获取最新版本的Maven源码包,或者使用wget命令直接在Linux上下载。例如,下载3.8.3版本的命令是`wget ...

    Maven仓库链接下载

    3. 使用Maven依赖管理工具:如Apache Archiva、Nexus等,它们提供了图形界面来搜索和下载构件。 五、`.m2`目录详解 `.m2`目录是Maven默认的本地仓库路径,位于用户的主目录下。这个目录包含以下子目录: - `...

    在Linux下搭建自己的私有maven库并部署和发布自定义jar依赖和自定义maven插件(三)开发和发布自己开发的maven插

    可以选择使用Nexus、Artifactory等专业仓库管理工具,也可以简单地使用Apache Archiva。这里我们以Archiva为例,首先从官方网站下载最新版本的Archiva,然后解压并启动服务: ```bash wget ...

    archiva的安装

    为了使Maven使用Archiva作为仓库,需要在`~/.m2/settings.xml`文件中添加Archiva的repository和proxy配置。示例配置如下: ```xml &lt;id&gt;archiva &lt;repository&gt; &lt;id&gt;my-internal-repo &lt;name&gt;Archiva Managed ...

    Archiva server mirroring configuration

    Apache Archiva是一款开源的企业级 Maven 仓库管理器,它可以帮助开发者管理和控制软件库的整个生命周期。在Archiva中,配置服务器镜像是一个重要的功能,可以有效地提升开发效率,减少网络延迟,提高资源获取速度。...

    maven下载、安装、配置与使用教程&相关项目

    2. **Apache Archiva**:Apache Archiva 也是一个优秀的 Maven 仓库管理工具,适用于企业级应用。 #### 十二、自动化构建和持续集成 1. **Jenkins**:将 Maven 集成到 Jenkins 中,实现持续集成/持续部署(CI/CD)...

    Maven学习全教程.doc

    Maven是一个基于项目对象模型(POM)的项目管理和构建自动化工具,由Apache软件基金会开发。Maven提供了一个统一的方式来构建、测试、打包和部署项目,使得项目的管理和维护更加容易。 结构概述 --------- Maven的...

    this is nexus

    ### NEXUS搭建与常见问题解决方案 #### 一、NEXUS简介与搭建流程 **NEXUS** 是由Sonatype公司开发的一款开源且功能强大的仓库管理系统,它主要用于管理Maven项目的依赖关系,并且能够有效地解决Java项目在构建过程...

Global site tag (gtag.js) - Google Analytics