Archiva 创建私服

写在前面:这篇文章大部分是别人写好的,只有后来关于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。至此我们在公司内网使用代理的情况下私服也能正常工作了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值