- 浏览: 320636 次
- 性别:
- 来自: 上海
文章分类
最新评论
-
大菜头:
yelifei94 写道按你说发 依旧乱码中。。。如果依然无法 ...
JForum 2.1.8 中文乱码问题 -
shenxielangzi:
折腾半天呀,也是这个问题。疯了
java.sql.SQLException: ORA-00911: 无效字符 -
v4S9vdHc:
这应该是说 return 要在函数体内
SyntaxError: 'return' outside function -
chjh_721:
Supported Values for @SuppressWarnings -
zhanyingle_1981:
哈哈,同道中人
java.sql.SQLException: ORA-00911: 无效字符
来源:http://forearrow.iteye.com/blog/171385
1. 介绍
Maven是Java开发者中流行的构建工具,Maven的好处之一是可以帮助减少构建应用程序时所依赖的软件构件的副本,Maven建议的方法是将所有软件构件存储于一个叫做repository的远程仓库中。
Maven会从ibiblio.org中的公用仓库中同步构件,这个公用仓库下载缓慢、不稳定,并且不包含一些构件的最新版本,而且不能上传团队私有的构件。通过设置内部Maven仓库,团队可以更有好地利用Maven仓库的优势并且克服使用ibiblio上的仓库时的缺点。
本文着眼于Maven仓库工具应提供的一些功能,列出了选择Maven仓库工具的标准,说明了使用Artifactory设置Maven仓库的相关步骤。在Linux和Windows中设置Maven仓库的过程是相同的,少数不同点在文中已经用高亮显示,本文列出了与这个Maven仓库的使用有关的POM文件的范例,用截图来向用户阐述如何设置Maven仓库,Maven和artifactory配置范例也有列出。
1.1 背景知识
本文假定读者熟悉以下的概念和技术:
Maven 2
J2EE web 服务器部署过程(e.g. 在Tomcat中部署Web应用程序)
XML
1.2 Maven仓库的目的
Maven仓库的目的是作为团队内所使用的所有软件构件的内部私有构件仓库,将Maven构件(jar和pom)存储到一个专门的Maven仓库比将它们存储到版本控制系统中更有优势,这是因为:
构件(jar)是二进制文件,不属于版本控制系统,版本控制系统在处理文本文件方面比较好
保持较小的版本控制数据库
Checkout、update和其他版本控制的操作可以更快
1.3 建立内部私有仓库的优势:
减少可能的版本冲突
减少首次构建时需要的手动干涉
中央仓库包含所有依赖的软件构件,引用单一的中央仓库比引用多个独立的本地库要好
使用内部仓库做clean构建时会快些,因为Maven构件是从内部服务器而不是从因特网上的ibiblio服务器获取。
1.4 Maven构件库的类型
本地仓库——位于开发者的机器,由开发者维护,它从位于‘~home/.m2’ 目录的‘settings.xml’文件中定义的Maven仓库上同步,如果在pom.xml或setting.xml文件中没有设置内部私有远程仓库,那么开发者机器上的这个本地仓库就会从ibiblio.org 上的公用Maven仓库上同步。
内部私有远程仓库——这是我们将要设置的仓库,我们将改变maven 的pom.xml或settings.xml文件来使用这个库。
外部公用远程仓库——这是在ibiblio.org上的外部公用仓库,默认情况下,Maven从这个仓库上同步。
2.Maven仓库概览
2.1 没有Maven仓库下的开发环境
2.2 具有团队内部远程仓库的开发环境
3. 本教程Maven仓库的用例介绍
在内部仓库中创建2个子库
Ibiblio 缓存‘Ibiblio-cache’ ——用于存储从ibiblio.org中下载的构件,可以公开访问,它将从外部的ibiblio仓库中同步
内部仓库internal-maven-repository——用于存储团队内部的构件,它不与任何外部仓库同步,是团队专有的构件库
可以创建另一个子仓库,这是可选的,用于存储那些公用的但是在ibiblio上暂时没有的构件,例如一些构件的新最版本,这个仓库不与内部仓库同步。我们可以称它为第三方‘3rd-party’
浏览远程库,最好是通过一个web浏览器
在仓库中搜索构件
从版本控制系统中下载代码,修改settings.xml指向内部仓库并且做一次没有任何手工干涉的clean构建
向仓库中安装一个构件的新版本
向仓库中大批导入构件
从仓库中大批导出构件
手动备份仓库,设置定时自动备份任务
4. Maven仓库工具的选择标准
理想的Maven仓库工具应该:
开放源码并且免费
提供管理工具
提供仓库浏览器——最好是web浏览器而不是桌面应用程序
可以部署到标准web服务器中——例如Apache或Tomcat
创建、编辑、删除子库的能力
批量导入/导出的工具,用来向构件库或从构件库移动构件
访问控制工具和匿名只读访问
安装和使用简单
备份功能
问题追踪,论坛或其他独立的信息来源
活跃的社区/开发者,这样产品才能改进,bug才能修正
5. 不同Maven仓库工具的比较
一些流行且免费的Maven仓库工具有:
标准Maven代理codehaus—— http://maven-proxy.codehaus.org/
Dead simple Maven Proxy (DSMP) - http://www.pdark.de/dsmp/
Proximity - http://proximity.abstracthorizon.org/
Artifactory - http://www.jfrog.org/sites/artifactory/latest/
下面列出了一个比较:
codehaus | DSMP | Proximity | Artifactory | |
管理工具 | 否 | 基本 | 是 | 是 |
构件库浏览器 | 基本 | 否 | 是 | 是 |
部署到标准Web服务器 | 是(不可配置) | 否 | 是 | 是(与Jetty绑定,支持Tomcat) |
子库管理 | 是 | 是 | 是 | 是 |
批量导入/导出构件 | 否 | 否 | 否 | 是 |
安装使用简单 | 是 | 是(从代码构建) | 是 | 是(AJAX界面) |
备份功能 | 否 | 否 | 否 | 是(使用quartz和cron表达式) |
问题追踪 | JIRA,IRC | Wiki issues Tracker | Jira issues Tracker(良好的在线文档) |
研究过以上所有产品之后得出结论,Artifactory 拥有我们要的所有标准。Proximity看样子也有许多我们要的特性,我们将着眼于Artifactory 的使用。
关于Artifactory 的其他方面:
符合我们的需求
Apache 2.0 许可
运行于JDK 1.6和Tomcat 6。Artifactory以‘war’文件形式部署到Tomcat
使用Derby数据库来存储构件,数据以一个已发布的知名的格式存储
所有构件可以被批量导出到本地库然后导入到其他库,因而易于将构件从一个仓库工具移到另一个,它也使得Maven库的升级非常容易
兼容Java Content Repository 标准(JSR-170)。
使用Lucene作为搜索引擎,仓库可以被索引和重新索引
Ajax界面
易于定制界面
使用JIRA作为问题追踪系统
6. 设置Maven仓库
6.1 软件需求
Artifactory——从http://www.jfrog.org/sites/artifactory/latest/下载和安装,当前最新版本是1.2.1-rc1,Artifactory是一个可以被安装到Tomcat中去的Web应用程序
JDK 1.6 – 更多信息请参阅http://www.jfrog.org/sites/artifactory/latest/install.html
Tomcat 6
6.2 目录结构
下载和解压artifactory。目录结构如下:
这些目录是:
backup —— 仓库的备份,可以使用cron表达式设置备份策略,quartz定时调度程序在指定的时间里运行备份任务,备份时间间隔在‘ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’文件中指定
bin ——内置jetty 服务器的运行批处理文件
data —— 包含derby数据库文件,如果你想以一个空的构件库开始,可以删除这个目录中的所有内容,在全新的artifactory 安装中,这个目录是空的。
etc —— artifactory 的配置文件,有‘artifactory.config.xml’ 、‘jetty.xml ‘和‘log4j.,properties’
lib —— 包含所有依赖的jar文件
logs —— 日志文件
webapps —— 包含war文件,它可以被拷贝到Tomcat中安装。
6.2 在Tomcat 6中部署
部署‘<ARTIFACTORY_INSTALLATION_FOLDER>/webapp’目录中的war文件到 ‘<TOMCAT_INSTALLATION_FOLDER>/webapps’目录中,在jdk1.6和Tomcat 6环境下不需要改变tomcat的配置,Tomcat 6会检测并部署它。
当这个Web应用程序被部署的时候,需要这些信息:
保存构件的数据库的位置
artifactory 的xml配置文件的位置
备份目录的位置
可以在一个配置文件中指定所有3个信息,在Tomcat启动期间我们只需要指定artifactory的安装目录,artifactory会计算出其余的信息。可选的方法是使用jdbc设置好derby数据库的连接并且在Web应用程序中配置好artifactory (通过在Web应用程序中包含artifactory.config.xml文件)。不管怎样,这个方法是简单的。
artifactory 安装目录的位置可以被设置为一个环境变量,在Linux中,用‘.bash’来输出artifactory 安装目录的位置的脚本是:
export JAVA_OPTS = -Dartifactory.home=/home/amangat/artifactory-1.2.1-rc1
在Windows中,可以添加到Tomcat启动选项中:
6.3 设置Maven仓库
建议的方法是在我们的Maven仓库中创建3个库(或子库),它们是:
内部私有仓库private-internal-repository:这个仓库包含仅在团队内使用的构件,它们由开发者手动上传,这个仓库不与ibiblio 中的远程仓库同步,因为这个仓库(或子仓库)中的构件是团队私有的。
第三方库3rd-party:这个仓库包含公有的但不在ibiblio服务器上的构件,例如,最新版本的尚不在ibiblio的组件或jdbc驱动。这个仓库不与ibiblio 同步,因为ibiblio 没有这些jar。
Ibiblio 缓存Ibiblio-cache:这个仓库与ibiblio 仓库同步,它是ibiblio 上的构件的缓存。
设置这三个仓库,需要修改<ARTIFACTORY_INSTALLATION_FOLDER>/etc/artifactory.config.xml’中的配置:
- <config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://artifactory.jfrog.org/xsd/1.0.0"
- xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0
- http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd">
- <!-- Backup every 12 hours -->
- <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>-->
- <localRepositories>
- <localRepository>
- <key>private-internal-repository</key>
- <description>Private internal repository</description>
- <handleReleases>true</handleReleases>
- <handleSnapshots>true</handleSnapshots>
- </localRepository>
- <localRepository>
- <key>3rd-party</key>
- <description>3rd party jars added manually</description>
- <handleReleases>true</handleReleases>
- <handleSnapshots>false</handleSnapshots>
- </localRepository>
- </localRepositories>
- <remoteRepositories>
- <remoteRepository>
- <key>ibiblio</key>
- <handleReleases>true</handleReleases>
- <handleSnapshots>false</handleSnapshots>
- <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern>
- <url>http://repo1.maven.org/maven2</url>
- </remoteRepository>
- </remoteRepositories>
- </config>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://artifactory.jfrog.org/xsd/1.0.0" xsi:schemaLocation="http://artifactory.jfrog.org/xsd/1.0.0 http://www.jfrog.org/xsd/artifactory-v1_0_0.xsd"> <!-- Backup every 12 hours --> <!--<backupCronExp>0 0 /12 * * ?</backupCronExp>--> <localRepositories> <localRepository> <key>private-internal-repository</key> <description>Private internal repository</description> <handleReleases>true</handleReleases> <handleSnapshots>true</handleSnapshots> </localRepository> <localRepository> <key>3rd-party</key> <description>3rd party jars added manually</description> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> </localRepository> </localRepositories> <remoteRepositories> <remoteRepository> <key>ibiblio</key> <handleReleases>true</handleReleases> <handleSnapshots>false</handleSnapshots> <excludesPattern>org/artifactory/**,org/jfrog/**</excludesPattern> <url>http://repo1.maven.org/maven2</url> </remoteRepository> </remoteRepositories> </config>
启动Tomcat并且输入 http://localhost:8080/artifactor
下面是artifactory的首页面:
以用户名admin和密码password登录,点击浏览仓库的链接,你可以查看仓库的内容。
7.配置Maven以使用新的仓库
7.1 配置Maven的settings.xml 文件
Maven使用位于‘~/.m2/settings.xml’目录的settings.xml文件来获取Maven仓库 ,如果没有在该文件中指定仓库,Maven默认使用ibiblio.org上的仓库, settings.xml文件必须被修改以使用新的仓库:
- <profiles>
- <profile>
- <id>dev</id>
- <properties>
- <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home>
- </properties>
- <repositories>
- <repository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- </profiles>
<profiles> <profile> <id>dev</id> <properties> <tomcat5x.home>C:/InstalledPrograms/apache-tomcat-5.5.20</tomcat5x.home> </properties> <repositories> <repository> <id>central</id> <url>http://localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <id>snapshots</id> <url>http://localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>central</id> <url>http://localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </pluginRepository> <pluginRepository> <id>snapshots</id> <url>http://localhost:8080/artifactory/repo</url> <releases> <enabled>false</enabled> </releases> </pluginRepository> </pluginRepositories> </profile> </profiles>
7.2 使用pom.xml配置Maven
也可以在项目的pom.xml文件中设置仓库,下面是pom.xml范例文件:
- <project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
- http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>test</groupId>
- <artifactId>test</artifactId>
- <packaging>jar</packaging>
- <version>1.0-SNAPSHOT</version>
- <name>test</name>
- <url>http://maven.apache.org</url>
- <repositories>
- <repository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>central</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </pluginRepository>
- <pluginRepository>
- <id>snapshots</id>
- <url>http://localhost:8080/artifactory/repo</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- </pluginRepository>
- </pluginRepositories>
- <dependencies>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>3.8.1</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
- </project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>test</groupId> <artifactId>test</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>test</name> <url>http://maven.apache.org</url> <repositories> <repository> <id>central</id> <url>http://localhost:8080/artifactory/repo</url> <snapshots> <enabled>false</enabled> </snapshots> </repository> <repository> <发表评论
-
org.hibernate.QueryException: in expected错误
2011-10-20 16:18 1546错误信息:org.hibernate.QueryExcepti ... -
Oracle 是不支持主键自增
2011-04-23 08:59 1278今天遇到一个问题,以为oracle 是支持主键自增的,结果程序 ... -
hibernate 插入Date字段 时分秒丢失
2011-04-23 08:51 2215Oracle 中如果字段类型是Date,在使用JBoss JP ... -
JBoss启动异常: Port already in use: 1098
2010-05-11 12:44 5772JBoss启动异常: Port already in use: ... -
caused by: java.lang.NoSuchMethodError: javassist.scopedpool.ScopedClassPool.
2010-03-31 14:27 2541今天用testng 跑case时发现 caused b ... -
java.sql.SQLException: ORA-00911: 无效字符
2010-02-01 16:25 5801今天在用原生sql, jdbc操作数据库时老有问题: java ... -
Hudson : pending-waiting for next available executor问题
2009-12-24 10:58 4163今天上午发现测试用的job没有起来, 通过hudson 的we ... -
这几天跑持续集成的Function Test遇到的问题s
2009-12-17 17:37 2701这几天在弄持续集成功能测试的东西,遇到了两三个奇怪的问题,真的 ... -
Maven Profiles
2009-12-09 17:32 1610From: http://www.sonatype.co ... -
maven依赖关系中Scope的作用
2009-12-09 16:24 1402转载:http://peak.iteye.com/blog/2 ... -
mvn install:install文件名中需要不出现空格
2009-12-07 10:01 1917mvn install:install-file -Dgrou ... -
mvn 长命令
2009-12-06 10:08 1020mvn archetype:create -DgroupId ... -
JPA Query 注意事项一
2009-11-11 18:33 36071. 错误: org.hibernate.QueryPara ... -
java.lang.IllegalArgumentException: id to load is required for loading
2009-11-11 16:08 2056java.lang.IllegalArgumentExcept ... -
'Starting JBoss v5.0 at localhost' has encountered a problem
2009-11-05 22:04 4810eclipse中启动jboss5时提示:Server JBos ... -
JUnit 4 Vs TestNG – Comparison
2009-11-04 13:13 1408http://www.mkyong.com/unitte ... -
Supported Values for @SuppressWarnings
2009-11-03 16:22 2381http://www.breakitdownblog.com/ ...
相关推荐
使用Artifactory设置Maven2组件库
设置Maven仓库-Artifactory
使用Artifactory上传library至本地maven仓库示例项目,原文地址:http://blog.csdn.net/level_26/article/details/53483444
支持上传多种maven仓库,配置相关全部自动生成,无需在项目中增加上传配置,支持使用maven、artifactory插件swing界面上传
该插件解析Maven存储库的maven-metadata.xml而不是使用Nexus API,因此可以用于更广泛的Artifactory和Nexus存储库。 GoCD JSON API的使用 在以下存储库上进行了测试: Maven中央() JBoss Nexus() Bintray ...
Nexus是Sonatype推出的强大Maven仓库管理器产品,要比以前TSS上介绍的Artifactory要好使用的多,也是一个拆箱即用的Java App,内嵌Jetty容器和Java Wrapper做Windows服务,安装简单到解压然后双击install即可。...
SAMPLE_MAVEN_ARTIFACTORY
Artifactory REST Example Artifactory REST Example 使用java rest api访问 artifactory
1、 安装好私服,使用nexus或artifactory 2、 配置maven conf/setting.xml文件 添加上传验证 <id>release <username>admin <password>admin123 <id>snapshot <username>admin <password>admin123 ...
Artifactory REST Example 使用java rest api访问 artifactory
terraform-provider-artifactory 使用Terraform管理工厂通过自制软件安装brew tap drewsonne/tapbrew install terraform-provider-artifactorytf-install-provider artifactory 在查看详细信息提供者provider " ...
资源来自pypi官网。 资源全名:artifactory-0.1.6.tar.gz
将工件上传到Artifactory(包括对照Artifactory生成的校验和进行校验) 上传构建详细信息 该插件需要为GoCD任务设置这些环境变量 ARTIFACTORY_URL ARTIFACTORY_USER ARTIFACTORY_PASSWORD 安装 下载[plugin jar]...
有关使用泊坞运行Artifactory的更详细的文档,请参阅的JFrog Artifactory的用户指南 码头工人 要了解有关Docker及其设置方法的更多信息,请参阅文档。 例子 以下示例可用 (已淘汰) (已弃用) (已弃用) (已...
资源分类:Python库 所属语言:Python 使用前提:需要解压 资源全名:artifactory_du-1.0.4-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
主要介绍了Android Studio通过Artifactory搭建本地仓库优化编译速度的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧