搭建 maven
java maven2具体应用如下:
1.下载maven2
http://maven.apache.org/download.html
2.设置二环境变量:解压,如解压在D:\mvntest,然后设置系统环境变量M2_HOME=D:\mvntest\apache-maven-3.0.3 ,path变量里添加D:\mvntest\apache-maven-3.0.3\bin,方便Maven在任何目录下运行。
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10
3.mvn -h可以查看帮助
如执行mvn --version可以查看版本信息
mvn --version
可以显示类似这样的信息:
Maven version: 2.0.8
Java version: 1.6.0
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"
. . . . . .
. . .
4.创建一个新项目:
Maven2的运行命令是mvn,常用命令为:
创建Maven项目:mvn archetype:create
编译源代码:mvn compile
编译测试代码:mvn test-compile
运行测试:mvn test
产生site:mvn site
打包:mvn package
在本地Repository中安装jar:mvn install
清除产生的项目:mvn clean
【一】
1>.如:创建一个Java项目:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-app
补充说明:
/*
* Maven 在第一次创建时需要下载文件,需要联网
* 考虑一下配置代理
* 【解压缩包目录下settings.xml】D:\mvntest\apache-maven-3.0.3\conf
* <offline>false</offline> 如果不想每次编译,都去查找远程中心库,那就设置为true。当然前提是你已经下载了必须的依赖包。
*
* <proxies>
* <proxy>
* <id>optional</id>
* <active>true</active>
* <protocol>http</protocol>
* <username></username>
* <password></password>
* <host>10.255.1.131</host>
* <port>80</port>
* <nonProxyHosts>local.net|some.host.com</nonProxyHosts>
* </proxy>
* </proxies>
*/
2>.生成.class文件:[进入同级目录下]
D:/mvntest\apache-maven-3.0.3\my-app> mvn eclipse:eclipse
3>.如果想把整个项目打包,则只需要执行命令: [进入同级目录下]
D:\mvntest\apache-maven-3.0.3\my-app>mvn package
4>.也可以测试一下该jar包,执行命令:
D:\mvntest\apache-maven-3.0.3\my-app>java -cp target/my-app-1.0-SNAPSHOT.jar com.oreilly.App
5>.如果输出:
Hello World! 则表示正确。
【二】
Maven2也考虑到:不同类型的项目需要拥有不同的目录结构。如创建web项目,可以使用命令:
mvn archetype:create -DgroupId=com.mycompany.app -DartifactId=my-webapp -DarchetypeArtifactId=maven-archetype-webapp
在Maven2中有了明确的生命周期概念,而且都提供与之对应的命令,使得项目构建更加清晰明了。主要的生命周期阶段:
validate,验证工程是否正确,所有需要的资源是否可用。
compile,编译项目的源代码。
test-compile,编译项目测试代码。
test,使用已编译的测试代码,测试已编译的源代码。
package,已发布的格式,如jar,将已编译的源代码打包。
integration-test,在集成测试可以运行的环境中处理和发布包。
verify,运行任何检查,验证包是否有效且达到质量标准。
install,把包安装在本地的repository中,可以被其他工程作为依赖来使用
deploy,在整合或者发布环境下执行,将最终版本的包拷贝到远程的repository,使得其他的开发者或者工程可以共享。
generate-sources,产生应用需要的任何额外的源代码,如xdoclet。
如果要执行项目编译,那么直接输入:mvn compile即可,对于其他的阶段可以类推。阶段之间是存在依赖关系(dependency)的,如test依赖test-compile。在执行 mvn test时,会先运行mvn test-compile,然后才是mvn test
因为maven2 是有生命周期这一概念的,所以如果你执行package,相应的以前步骤,如compile,test等都会自动执行。
刚开始执行会比较慢,需要从maven2远程库中下载所有的文件到本地。如果你的本地没有相应的依赖包,则每次maven都会去远程下载,所以配置一个镜像库就比较重要了。
. . . . . .
参考文档:http://www.cnblogs.com/flyingzqx/archive/2009/12/03/1616201.html
http://blog.chinaunix.net/u3/106704/showart_2261558.html
http://wenku.baidu.com/view/c069154f2e3f5727a5e96267.html --《百度文库》
http://www.ibm.com/developerworks/cn/java/j-maven/ http://www.duduwolf.com/wiki/2006/25.htm
构建CruiseControl
一、构建CruiseControl
你机器上至少要安装有JAVA 1.4,并在环境变量中设置有JAVA_HOME,并把java/bin加入到path中。CruiseControl自带了ANT,所以不用事先安装
如果从源码中构建CruiseControl,要确保你的机器可以访问互联网。因为构建过程中要检查一些license。另外,最好有SVN 客户端软件,因为在构建时,它会用到javahl
二、运行CruiseControl
直接运行CruiseControl目录下的CruiseControl.bat,它会自行启动Jetty6,当从Console中看到它启动完毕后,你就可以在浏览器中访问http://localhost:8080/dashboard,此时你会看到一个名为connectFour的示例项目在Dashboard上显示了。
(如果你足够快的话,你会发现Dashboard 上的小方块是从灰色变成深绿色的。为什么呢?我们以后再说。)
“绿色”表示该项目构建通过。如果要是有多个项目的话,应该看到多个小方块。
点击“Builds” Tab页,就到了 Builds 页。这一页会以列表的方式显示所有的项目。当前只有一个项目,所以在列表中只有一行,如下图所示:
在该页面上点击某个项目时,会打开Build Detail页,显示该项目最近一次Build的信息。页面右侧是该项目所有历史构建信息。你会发现,这时connectFour项目有两个构建历史版本,一个是刚刚构建完成的,另一个是两年前的构建。这些信息是来自于CruiseControl对该项目的日志文件。此时,点击这两个构建结果中的任何一个,都会打开该次构建的Build Detail页面,显示相关的构建历史信息。如下图所示:
三、配置文件及其正确位置
配置文件包括两个,一个名为config.xml,另一个名为dashboard-config.xml。默认情况下,这两个文件和cruisecontrol.bat在同一下目录下,即工作目录。
如果在配置文件中,任何路径前面如果没有“/”的话,那就是相对于工作目录的。
另外,CruiseControl是可以改变他们的位置的,但建议在没有深入了解CruiseControl时,不要试图改变它们,因为我们的目标是让CruiseControl在最短的时间里为你创建价值。
u Config.xml 文件
<cruisecontrol>
<project name="connectfour"> --这里的name应该和你在projects目录下的项目名完全一致。
<listeners> --用于监听项目状态的变化(指building,passed等)
<currentbuildstatuslistener file="logs/${project.name}/status.txt"/> --这里的${project.name}
</listeners> 是指“connectfour”
<bootstrappers> --用于CruiseControl从Repository更新代码
<svnbootstrapper localWorkingCopy="projects/${project.name}" />
</bootstrappers>
<modificationset quietperiod="30"> --用于监听在quietperiod秒内,Repository是否变化
<svn localWorkingCopy="projects/${project.name}"/>
</modificationset>
<schedule interval="300"> --用于每隔interval秒,CruiseControl去检查并计划一次构建
<ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml"/>
</schedule>
<log> --用于得到并保存log文件。默认情况下,将放在projects/${project.name}的目录下
<merge dir="projects/${project.name}/target/test-results"/> --用于将Build中生成的结果合并
</log> 到log文件中
<publishers> --用于将构建的结果(如二进制文件)发布到指定的位置
<onsuccess> --决定在构建成功的情况下,发布哪些内容
<artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.jar"/>
</onsuccess>
</publishers>
</project>
</cruisecontrol>
u dashboard-config.xml (一般情况下,此文件可以不变)
<?xml version="1.0" encoding="UTF-8"?>
<!--
/********************************************************************************
这里省略了一些声明 :)
********************************************************************************/
-->
<dashboard>
<buildloop
logsdir="" --这里指定logs目录,一定要与config.xml文件中一致,否则你会有麻烦。
如果为空串,则默认为工作目录下的logs目录。
artifactsdir="" /> --这里指定artifacts目录,一定要与config.xml文件中一致
如果为空串,则默认为工作目录下的artifacts目录。
<features allowforcebuild=""/> --是否可以在Dashboard上强制构建(force build)
<trackingtool projectname="" baseurl="" keywords=""/> --这是用于与Mingle的集成
<subtabs> --在这里,你可以自己扩展你自己的subtab页,不过要先实现一些接口。
<subtab class="net.sourceforge.cruisecontrol.dashboard.widgets.ErrorsAndWarningsMessagesWidget" />
</subtabs>
</dashboard>
四、配置文件中的注意事项
1、如果logs、artifacts和projects目录不存在,在你运行CruiseControl之前,要手工建立它们。
2、确保两个配置文件中的logs/artifacts目录指向同一个目录。因为CruiseControl core会向其中写数据,而Dashboard会从中读数据。
五、小贴士
在Config.xml文件中,有几个元素的概念要先澄清一下(只针对当前示例,严格定义请参见CruiseControl的文档)。
1. <listeners> 用于监听状态变化,如waiting for build,queued,building。一般不用改变。
2. <bootstrappers>用于检出代码,CruiseControl有很多种bootstrapper,示例中使用的是SVN。localWorkingCopy属性是指你把代码检出到安装CruiseControl机器的哪个文件目录。
3. <modificationset>用于监听Repository的变化频率,如果CruiseControl发现代码有变化,而且在quietperiod秒内没有其它用户检入代码(用于保证被构建的版本完整性),CruiseControl才会检出代码。
4. <schedule >用于指定CruiseControl去检查Repository的时间间隔。并指定使用哪个构建文件。示例中使用的是ant脚本,构建文件是被检出项目的根目录下的build.xml(即在Repository中)。
5. <log>用于指定CruiseControl把日志放在哪里,把哪些构建结果放在日志中。如果没有指定任何属性,默认为logs目录下的${project.name}目录。
6. <publishers> 用于在构建结束后,发布哪些消息和文件。CruiseControl有很多插件可以做各种各样的Publishing。例如,在构建成功后,通过http调用指定的页面,也可以给指定的人发邮件。在失败时,播放音乐,通知team。
参考文件:http://blog.youkuaiyun.com/tony1130/article/details/2041968
maven下nexus的搭建
nexus的安裝
1.nexus的下載地址
http://nexus.sonatype.org/downloads/
我下載的是nexus-oss-webapp-1.9.2-bundle.tar.gz
解壓後得到2個文件:nexus-oss-webapp-1.9.2 和sonatype-work
前者包含了nexus的運行環境和應用程序,後者包含了你自己的配置和數據。
2.啟動nexus
在上面提到,nexus的運行環境在nexus-oss-webapp-1.9.2目錄,下面就進入這個目錄啟動:
D:\nexus\nexus-oss-webapp-1.9.2\bin\jsw\windows-x86-32\nexus.bat (windows-x86-32根据自己的机器而定)
注意:jsw文件夾下有很多針對不同操作系統到文件夾,選中適合自己操作系統的文件夾。
也可以把start,stop做成腳本放在桌面上,避免不停的cd
附件為start和stop的腳本,請打開腳本修改自己本機上nexus的路徑。
3.打開nexus
在瀏覽器中訪問: http://localhost:8081/nexus
出現
点击右上角的login in
输入账号号:admin
输入密码:admin123
登录成功
配置nexus
由於在新搭建的nexus環境中只是一個空的倉庫,所以第一步就是要和遠程的Maven中心倉庫進行同步。
如果在Reindex之後,並沒有同步到遠程的倉庫,可以檢查每個倉庫的設置。下面是Maven Central的設置:
開打maven目錄-> conf -> settings.xml
找到localRepository
上面到註釋信息寫道:Default: ~/.m2/repository
我們可以添加
Java代码
- <localRepository>${M2_HOME}/repository</localRepository> <localRepository>${M3_HOME}/repository</localRepository>
${M2_HOME}是maven到安裝路徑,新建個repository文件夾用來裝入本地的jar包,順手把以前默认的repository刪除.
依次在settings.xml文件裡輸入
Xml代码
- <!-- nexus帳號和密碼-->
- <server>
- <id>nexus-releases</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- <server>
- <id>nexus-snapshots</id>
- <username>admin</username>
- <password>admin123</password>
- </server>
- </servers>
- ...
- <!-- 引用naxus倉庫組-->
- <profile>
- <id>dev</id>
- <repositories>
- <repository>
- <id>nexus</id>
- <url>http://127.0.0.1:8081/nexus/content/groups/public/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
- <pluginRepositories>
- <pluginRepository>
- <id>nexus</id>
- <url>http://127.0.0.1:8081/nexus/content/groups/public</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </pluginRepository>
- </pluginRepositories>
- </profile>
- ..
- <!-- nexus -->
- <activeProfiles>
- <activeProfile>dev</activeProfile>
- </activeProfiles>
注意:根據标识位置准确輸入
上傳jar到本地倉庫
選中3rd party 点击Artifact Upload标识点击select artifact(s) 按鈕選擇要上傳到jar包然後再add artiffact -> uplaod artiffact 即可。
編輯pom.xml的時候可能找不到在nexus的jar包
在nexus里查询本地上傳的jar包复制xml代碼到pom.xml文件保存即可。
编辑好pom.xml後保存
完毕後在${M2_HOME}/repository 文件裡可看到导的jar包。
参考文件:http://zhaohaolin.iteye.com/blog/1090403
下载安装SVN
参考文件:http://www.cnblogs.com/ttzhang/archive/2008/11/06/1325940.html