写在前面:这篇文章大部分是别人写好的,只有后来关于maven的proxy的设置是针对我个人的,因为本人所在公司采用了代理,所以必须设置才行。

WAR安装模式(WinXP,tomcat7.x)

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

2)添加war文件

tomcat根目录下创建文件夹archiva,把apache-archiva-1.3.6.zip名字改成archiva.war并且拷贝到刚刚创建的%TOMCAT_HOME%/archiva目录下

3)添加tomcat配置文件

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

<Context path="/archiva" docBase="${catalina.home}/archiva/archiva.war"> <!--*.war必须和放入的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"?>去掉。

把上边蓝色的部分改成你的本地路径,比如D:\Software\Archiva\database/archivaD:\Software\Archiva\database/user

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

4)拷贝运行时需要的jartomcatlib目录下

derby-10.1.3.1.jar(或更高版本)activation-1.1.jarmail-1.4.jar这三个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

设置参数CATALINA_OPTS时,等号后边一定不能有双引号。

最近一次复习的时候发现,这些都不管用了,启动tomcat后进入archiva主页,弹出404错误,根据官网 http://archiva.apache.org/docs/2.0.1/adminguide/webapp.html 里面的 Diagnosing Errors提到的路径查看日志,发现下面错误:

严重: Exception sending context destroyed event to listener instance of class org.apache.maven.archiva.web.startup.ArchivaStartup
org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'registry#commons-configuration' defined in null: Could not resolve placeholder 'appserver.home'

Google搜索了下,有人说将CATALINA_OPTS设置为环境变量,我试了下,果然行。

6) 启动tomcat 地址栏输入http://localhost:8080/archiva 以后的步骤同standalone模式。第一次登录,用户名admin是默认的,需要用户自己设置密码,我的是amdin/admin123 注意,在war模式下,默认的data目录在tomcat根目录下,log文件保存在tomatlog目录下。 可以登陆到管理GUI界面上更改每个repositorydata目录。war模式下,Archiva会在~/m2目录下自动建立一个配置文件archiva.xml

==============配置Maven连接的repository==============

虽然可以直接修改pom.xml文件来更改repository地址,但是可重用性并不好。 建议修改~/.m2目录下的settings.xml文件 只要建立一个镜像就可以了,如下<mirrors>
<mirror>
<id>archiva</id>
<mirrorOf>*</mirrorOf>
<url>
http://localhost:8080/archiva/repository/internal </url>
</mirror>
</mirrors>

由于archiva默认只有centralmaven2-repository.dev.java.net这两个仓库作为下载仓库,一些其他的jar可能不在这两个仓库里(比如scannotation-1.0.3.jar),我们需要自己手工加上。

参考链接:

http://www.mkyong.com/maven/how-to-add-remote-repositories-in-apache-archiva/

http://www.mkyong.com/maven/how-to-add-proxy-connector-in-apache-archiva/

不但需要在Repositories页面点击RemoteRepositories后的 Add来添加我们需要加入的仓库地址,同时还要在Proxy Connectors页面增加相应的 Connector这样Archiva才能知道它需要代理的仓库

===============问题作出回应了,怎么还是抛出类似不处理就罢工的信息==================

有时 maven在执行 mvn clean package这样命令老是遇到同一个错误的时候,它会从缓存中看问题是否解决了,如果没有解决,会抛出同样的错误信息,尽管你可能从别的地方解决了。

可以通过 mvn clean package–UMaven强制执行打包任务。

===============如何设置Proxy,当公司内部有代理==============

请注意,之前我们的设置是将archiva.war作为一个应用放入Tomcat中,这样我们访问archiva通过http://localhost:8080/archiva,而且一切Maven的请求将通过这个网址进行代理。

如果没有采用Nexus或者Archiva做私服,当公司对网络采用代理时,那么~/.m2/settings.xml中关于Proxy的标准设置代码就应该加上并且是:

Hint:首先确认自己无法直接访问公共的Maven中央仓库,直接运行命令 ping repo1.maven.org可以检查网络。如果真的需要代理,先检查一下代理服务器是否畅通。比如下载有一个IP地址为 3.209.100.82,端口为80的代理服务,我们可以运行telnet 3.209.100.82 80来检测该地址的该端口是否畅通。如果得到错误信息,需要先获取正确的代理服务信息;如果telnet链接正确,则输入ctrl + 】,然后q,回车,退出即可)

<proxy>

<id>igate-proxy</id>

<active>true</active>

<protocol>http</protocol>

<host>3.209.100.82</host>

<port>80</port>

<nonProxyHosts>*.baidu.com|*.google.com </nonProxyHosts>

</proxy>

如果使用了私服(我这里用的是Archiva)并且公司内网使用了代理,那么就要对Archiva做两步处理,让所有的maven请求通过Archiva,Archiva的所有请求必须通过公司的内网代理,配置如下:

第一步:进入Archiva的管理页面,点击左侧栏的Network Proxies,如下:

点击Add Network Proxy链接,进入编辑页面:

Identifier会在后面用到,这里Hostname是我们公司内部使用的代理IP,端口是80.

点击Save Network Proxy按钮。这里我们就设置好了代理,那么怎么让Archiva的请求知道这个代理并把请求经过这个代理转发呢?

第二步:进入Archiva的管理页面,点击左侧栏的Proxy Connnectors,如下:

点击每一个Proxy Connector右上角的铅笔图标进行编辑,下面选择Central Repository作为例子:

可以发现,我们当初进行Proxy Connector编辑的时候,由于我们还没有设置Network Proxy,所有只有一个(direct connection)这个默认值,现在这个下拉列表中有了我们刚才定义的Network Proxy (igate-proxy), 这里更改igate-proxy作为Central RepositoryNetwork Proxy。至此我们在公司内网使用代理的情况下私服也能正常工作了。

Archiva 创建私服相关推荐

  1. 使用Nexus创建私服

    使用Nexus创建私服 部署环境是windowsxp 首先从 http://nexus.sonatype.rog/downloads 下载最新版的Nexus 我们可以根据个人的需求下载.里面有nexu ...

  2. 创建私服maven服务

    本地部署maven 1.下载maven,在pc端安装maven,然后将下载的maven解压到本地目录.如解压到d:\develop\apache-maven-3.5.0,配置maven的环境变量,通过 ...

  3. Docker安装 下载镜像 部署容器 备份 创建私服

    Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用应用 ...

  4. Docker私服搭建

    在开发中我们如果需要交付容器我们有哪些方式?实际上我们可以直接把文件打成压缩包的形式,也可以通过私服进行传递 1.压缩文件形式 docker commit 容器id 镜像名:tag image to ...

  5. Maven安装配置和私服搭建

    Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 在项目开发中Maven可以对jar包和对工程之间的依赖关系进行管理,集成tomcat插件,ma ...

  6. 搭建Maven私有仓库

    内部的项目并且需要多团队协作模块化开发的时候,自然会想到搭建自己的maven私有仓库,本文主要介绍如何搭建maven私服和如何在项目中添加依赖. Maven 的远程仓库分为中央仓库和私服仓库.中央仓库 ...

  7. 大厂首发!java敏捷开发模式面试题

    Maven权威指南 首先,本书适合所有Java程序员阅读.由于自动化构建.依赖管理等问题并不只存在于Java世界,因此非Java程序员也能够从该书中获益.无论你是从未接触过Maven.还是已经用了Ma ...

  8. [原创]Maven实战-读书笔记

    Maven读书笔记  Maven读书笔记 依赖 快捷键:Alt+Shift+X M 使用ArcheType来创建Maven项目骨架: Maven中坐标的定义 依赖范围 依赖传递 依赖调解 可选依赖 ...

  9. 大厂首发:338页网易Java面试真题解析火爆全网

    前言 为什么互联网资讯这么发达,但是没有出现技术人才井喷? 为什么会出现应届生薪资倒挂多年老员工的现象? 这个世界有太多的现象都可以用**"二八定律"**来解释. 20%拿着高工资 ...

最新文章

  1. java开发中的Mutex vs Semaphore
  2. 一个将字符串转换为整数的函数--atoi()
  3. HDU 1088 Write a simple HTML Browser
  4. REST、RESTful 与 RESTful API
  5. 【ARM】Tiny4412裸板编程之异常(软中断)
  6. ios android cpu占用率,iPhone-iOS-从应用程序获取CPU使用率
  7. 【转载保存】修改IK分词器源码实现动态加载词典
  8. PHP中字符串类型与数值类型混合计算
  9. nmea怎么转wgs84坐标c语言源码,NMEA-0813数据格式说明
  10. 龙芯2h芯片不能进入pmon_基于龙芯2F架构的PMON分析与优化
  11. 【DDD落地实践系列】DDD领域驱动设计如何进行工程化落地
  12. 实用技巧——Python实现从Excel读取数据并绘制成图像
  13. ​Podman Desktop: 一款超高颜值和功能强大的 Podman 桌面管理工具
  14. MySQL解决幻读详解
  15. NYOJ 541 最强DE 战斗力(大数水)
  16. Ultraedit 使用技巧
  17. ElasticSearch:部署ElasticSearch Kibana
  18. Python—6.1、日期时间
  19. 落户申请 有计算机证书,考信息系统项目管理师证书是不是可以申请入户
  20. 小学阅读方法六种_小学语文六年级阅读方法及技巧

热门文章

  1. c语言字母转换数字代码,实现c语言中字符串和数字的相互转换的代码
  2. 机器学习_正规方程(最小二乘法)的推导
  3. Data Types in the Kernel [LDD3 11]
  4. flask 使用html模板,Flask框架使用HTML模板的方法
  5. matlab第八课:图像分析(下)
  6. 分享三款免VIP软件,小众实用,正是你需要但没找到的
  7. 搞懂这 10 张脑图后,我膨胀了。
  8. hdu 1850 Being a Good Boy in Spring Festival (尼姆博弈)
  9. 仿QQ2011界面 MFC
  10. repost 力出一孔,“感觉睡觉都是在浪费时间”--孙正义