首页 > 其他分享 >使用Apache Archiva搭建Maven Repository Server

使用Apache Archiva搭建Maven Repository Server

时间:2023-06-04 15:01:18浏览次数:48  
标签:CATALINA Repository repository jar OPTS% Server Maven archiva lee



经过这两天的研究,对比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即可。

标签:CATALINA,Repository,repository,jar,OPTS%,Server,Maven,archiva,lee
From: https://blog.51cto.com/u_3871599/6410715

相关文章

  • SQL Server 日期格式转换(Convert用法)
    [color=red][b]有时间的记得要:datetime[/b][/color]SelectCONVERT(varchar(100),CONVERT(datetime,'2012-08-0117:41:54',120),120)SQLServer中,Convert可以将日期转换成不同格式,格式控制是由CONVERT(data_type[(length)],expression[,style])中的style来完成的。下面......
  • 数据库管理工具远程连接MySQL实例服务失败Host ... is not allowed to connect to thi
    MySQL社区版数据库8.0版本添加账号、分配权限、删除账号MySQL安全连接失败问题排查......
  • 5、半虚拟化驱动--virtio(linux和windows)和安装Windows server虚拟机
    KVM的功能主要体现在利用KVM的硬件辅助性虚拟化可以提高处理速度。但在虚拟机中,有些硬件不是KVM来实现加速的,如磁盘、内存、网络的性能,如果更好的提升速度,需要安装半虚拟化驱动半虚拟化驱动在软件层通过修改源代码让硬件的操作被虚拟机和宿主机所识别半虚拟化驱动--virtio红帽RHE......
  • Windows server 2022 常见 备份事项
    以下是WindowsServer2022的DNS备份批处理脚本示例:CopyCode@echooffsetlocalrem定义备份路径setbackupPath=c:\dns_backup\rem获取当前日期时间作为备份文件名for/f"tokens=1-3delims=/"%%ain('date/t')doset"datestamp=%%a-%%b-%%c"for/f&q......
  • 2022版本IDEA+Maven+Tomcat的第一个程序(傻瓜教学)
    2022版本IDEA+Maven+Tomcat的第一个程序(傻瓜教学)​作为学习Javaweb的一个重要环节,如何实现在IDEA中利用Maven工具创建一个Javaweb程序模版并连接Tomcat发布是非常重要的。我比较愚钝(小白),而且自身电脑先前运行过spring或maven的程序,系统内有一些IDEA安装的文件,因此花了点......
  • windows server2022 激活
    近期因为需要安装一个Windowsserver2022服务器操作系统做测试,安装完成后发现一些设置需要激活后方可使用。但又不想使用网上的激活软件去激活。有没有办法不安装激活软件又能激活延长Windowsserver2022操作系统的方法。还真找到了一个方法。以管理员身份打开运行powershell。打......
  • Windows Server 2022 KMS激活序列号
    一、推荐KMS服务器kms.0t.net.cn二、WindowsServer2022序列号Server2022零售版:RGN6B-MCPWX-6K6GK-HKM33-7VCXY-Standard标准版(非图形界面和桌面体验)DNVBD-FCT8Y-TQT8Q-HGQ34-QGRRV-Datacenter数据中心版(非图形界面和桌面体验)Server2022批量授权版:VDYBN-27WPP-V4HQT-9VMD......
  • VMware虚拟机安装Windows Server 2022
    硬件要求处理器:1.4GHz64位处理器,与x64指令集兼容内存(RAM):800MB(对于带桌面体验的服务器安装选项为2GB)磁盘存储空间:32GB网络适配器:以太网适配器的吞吐量至少为1GB/秒、符合PCIExpress体系结构规范准备工作①VMwareWorkstation软件(演示版本:vmware-workstation-full-16.2......
  • Intersection Observer API 交叉观察器 API vue3 antd table 滚动加载 使用过程
    需求:表格滚动加载做法:步骤一:给表格最后一行添加特定标识,类名或者id等组件库https://www.antdv.com/components/table-cn#APIwebApihttps://developer.mozilla.org/zh-CN/docs/Web/API/Intersection_Observer_API组件名table添加类名的组件方法rowClassName使用例子::......
  • 首次进入Mysql修改密码报“The MySQL server is running with the --skip-grant-table
    第一次安装完mysql,修改默认密码的时候,报“TheMySQLserverisrunningwiththe--skip-grant-tablesoptionsoitcannotexecutethisstatement”。先刷新mysql然后再重新修改密码即可。mysql>ALTERUSER'root'@'localhost'IDENTIFIEDBY'123456';ERROR1290(H......