- 浏览: 838759 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
loveseed1989:
您好,我用您的方法运行Cone.java,会给我报java.l ...
vtk学习笔记 --- 编译vtk库和java库 -
60love5:
60love5 写道首先谢谢你的解析,但你这个验证可见性的小程 ...
多线程中共享对象的可见性 -
60love5:
首先谢谢你的解析,但你这个验证可见性的小程序是存在问题的,你的 ...
多线程中共享对象的可见性 -
Gamehu520:
...
java 中的Unsafe -
shanpao1234560:
这个list不是静态的第一种情况下也会有线程安全的问题么,求指 ...
一个看似线程安全的示例
1、环境准备
操作系统:SUSE11
服务器:Tomcat6.0.20
Hudson:hudson-1.398.war(下载地址:http://java.net/projects/hudson/downloads/download/war/hudson-1.398.war)
2、搭建hudson服务器
其实搭建服务器的过程很简单,在suse11下安装tomcat,然后将hudson-1.398.war改名为hudson.war,并拷贝到tomcat的webapps目录下,这样启动tomcat服务器,访问地址:http://localhost:8080/hudson,如果能够看到hudson页面:(我这边是已经在hudson上建立了2个项目),则说明服务器已经启动成功。
3、hudson服务器配置
点击上图左侧的系统管理,进入到系统管理页面:
系统设置,主要是设置一些全局参数,比如一些变量、jdk安装目录、ant安装目录等。
读取设置,这个是在你修改了系统参数之后,不需要重启服务器,选择读取设置就可以了。
管理插件,在这里可以查看hudson可以使用的插件,然后选择需要的插件安装,这里有一个插件在后面用到,就是tomcat远程部署插件。
点击系统设置,进入设置页面:
a、设置jdk,别名随便设置,如jdk1.6.0_22
JAVA_HOME ,就是java的安装目录:/usr/java/jdk1.6.0_22/
b、设置ant,我这里使用ant来构建项目的,你也可以选择maven,那这里就设置maven相关参数
Name,设置ant的名称:apache-ant-1.8.1
ANT_HOME,ant的安装目录:/usr/apache-ant-1.8.1
c、设置邮件通知,这里可选,但是为了及时获取构建消息,还是设置一下。
设置完毕之后,别忘了点击保存来保存配置。
3、新建项目,在首页点击新建任务,
任务名称,填写你的项目名称,或者填写具有意义的名字,下面选择根据需要,我选择构建一个自由风格的软件项目,然后ok进入到任务设置页面。
在任务设置页面,需要进行以下设置:Source Code Management、Build Triggers、Build、Post-build Actions
Source Code Management :设置源代码管理工具,这里选择 Subversion,下面的Modules设置项目的svn地址即可 如http://127.0.0.1/svn/svndata/trunk/demo
这里需要注意的一点是,下面的Local module directory (optional) 要把“.”去掉,避免后面从svn库取项目源代码的时候,不包含项目目录。
最后勾中User Update。
Build Triggers:这里设置自动构建的时机以及频率,根据需要设置,我选择的是Poll SCM, Schedule :*/30 * * * * 意思是每30分钟检查一次svn库,如果有更新就进行一次构建。
Build:Invoke Ant,这里就可以选择之前配置的ant了。
Post-build Actions: 这里是设置在构建完毕之后,执行什么操作,因为我安装了Findbugs插件,所以这里会有Publish FindBugs analysis results这个选项,
FindBugs results 这里填写findbugs生成的findbugs.xml文件路径,相对于~/.hudson/jobs/demo/workspace的。
如果安装了tomcat的远程部署插件,可以在下面设置参数:
到此为止,项目的配置就结束了,但是项目还不能被自动构建,还需要在我们的项目中添加ant的build.xml文件。这里给出一个示例脚本:
<?xml version="1.0" encoding="UTF-8"?>
<project basedir="." default="findbugs" name="office">
<property environment="env" />
<property name="debuglevel" value="source,lines,vars" />
<property name="findbugs.home" value="/usr/findbugs-1.3.9" />
<property name="debug" value="off" />
<property name="optimize" value="on" />
<property name="deprecation" value="on" />
<property name="target" value="1.5" />
<property name="source" value="1.5" />
<property name="build" value="build" />
<property name="src" value="src" />
<path id="classpath">
<fileset dir="${build}/WEB-INF/lib">
<include name="**/*.jar" />
</fileset>
<!--<pathelement location="lib/"/>-->
</path>
<target name="clean">
<delete dir="${build}" />
</target>
<target name="init">
<mkdir dir="${build}" />
<mkdir dir="${build}\WEB-INF" />
<mkdir dir="${build}\WEB-INF\classes" />
<copy todir="${build}">
<fileset dir="${basedir}\WebRoot">
<include name="**" />
</fileset>
</copy>
</target>
<target name="complie" depends="init">
<javac srcdir="${src}" destdir="${build}/WEB-INF/classes">
<classpath refid="classpath" />
</javac>
<copy todir="${build}/WEB-INF/classes">
<fileset dir="${src}">
<include name="**/*.xml" />
<include name="**/*.properties" />
</fileset>
</copy>
</target>
<target name="build" depends="clean,init,complie">
<war warfile="${build}/demo.war" webxml="${build}/WEB-INF/web.xml">
<lib dir="${build}/WEB-INF/lib" />
<classes dir="${build}/WEB-INF/classes" />
<fileset dir="${build}" />
</war>
</target>
<taskdef name="findbugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" />
<target name="findbugs" depends="build">
<findbugs home="${findbugs.home}" output="xml" outputFile="${build}/findbugs.xml">
<auxClasspath>
<fileset dir="${build}/WEB-INF/lib">
<include name="*.jar" />
</fileset>
<fileset dir="${findbugs.home}/lib">
<include name="*.jar" />
</fileset>
</auxClasspath>
<sourcePath path="${src}" />
<class location="${build}/WEB-INF/classes" />
</findbugs>
</target>
</project>
可以简单的把这个脚本拷贝过去,然后修改相应的参数就可以使用了。
这样,在首页点击项目后面的构建按钮(每行最后一个)就可以进行构建了:
构建过程大体是这样的,hudson会通过svn从svn库中取得项目源代码到hudson所在的服务器的工作空间(一般是在当前登录用户目录下的.hudson/jobs/项目名称/workspace/目录下),然后调用项目中的ant脚本文件(build.xml)进行构建,根据build.xml文件的配置,会生成相应的文件,比如上面的脚本就会在build目录下生成war包。
如果你的项目还安装了tomcat远程部署插件并且做了配置,那么在生成war包之后,hudson将进行远程部署,即通过tomcat中的manager应用将war部署到tomcat中。
备注:tomcat要开始远程部署,首先要保留webapps目录下的manager应用,其次,修改tomcat配置文件:tomcat-users.xml,在里面添加角色manager以及该角色的用户,配置代码如下:
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="admin" password="admin" roles="admin,manager"/>
</tomcat-users>
如果在build.xml文件里面配置了findbugs任务,那么构建还会生成findbugs.xml文件,findbugs插件会生成相应的报告。
备注:findbugs插件的安装,下载地址:http://findbugs.sourceforge.net/downloads.html
然后解压到某个目录即可,然后在build.xml文件里面配置findbugs的路径即可。
这样,支持持续构建、findbugs以及远程部署的hudson服务器搭建完毕。
评论
1 楼
520920
2015-07-01
你好:
我在搭建的时候出现了JDK版本问题,但是我修改成1.5版本后仍然报错
我截图传不上来,我把文字粘贴下,望大神给点指点
prepare:
[mkdir] Created dir: D:\Hudson\jobs\iaf-ibatis\workspace\target\classes
compile.jar:
[javac] D:\Hudson\jobs\iaf-ibatis\workspace\build.xml:34: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 210 source files to D:\Hudson\jobs\iaf-ibatis\workspace\target\classes
[javac] D:\Hudson\jobs\iaf-ibatis\workspace\src\com\ibatis\common\jdbc\SimpleDataSource.java:52: com.ibatis.common.jdbc.SimpleDataSource 不是抽象的,并且未覆盖 java.sql.Wrapper 中的抽象方法 isWrapperFor(java.lang.Class)
[javac] public class SimpleDataSource implements DataSource {
[javac] ^
[javac] D:\Hudson\jobs\iaf-ibatis\workspace\src\com\ibatis\sqlmap\engine\type\CallableStatementResultSet.java:29: com.ibatis.sqlmap.engine.type.CallableStatementResultSet 不是抽象的,并且未覆盖 java.sql.ResultSet 中的抽象方法 updateNClob(java.lang.String,java.io.Reader)
[javac] public class CallableStatementResultSet implements ResultSet {
[javac] ^
[javac] 注意:某些输入文件使用或覆盖了已过时的 API。
[javac] 注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
[javac] 2 错误
BUILD FAILED
D:\Hudson\jobs\iaf-ibatis\workspace\build.xml:47: The following error occurred while executing this line:
D:\Hudson\jobs\iaf-ibatis\workspace\build.xml:34: Compile failed; see the compiler error output for details.
Total time: 1 second
Finished: FAILURE
我在搭建的时候出现了JDK版本问题,但是我修改成1.5版本后仍然报错
我截图传不上来,我把文字粘贴下,望大神给点指点
prepare:
[mkdir] Created dir: D:\Hudson\jobs\iaf-ibatis\workspace\target\classes
compile.jar:
[javac] D:\Hudson\jobs\iaf-ibatis\workspace\build.xml:34: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 210 source files to D:\Hudson\jobs\iaf-ibatis\workspace\target\classes
[javac] D:\Hudson\jobs\iaf-ibatis\workspace\src\com\ibatis\common\jdbc\SimpleDataSource.java:52: com.ibatis.common.jdbc.SimpleDataSource 不是抽象的,并且未覆盖 java.sql.Wrapper 中的抽象方法 isWrapperFor(java.lang.Class)
[javac] public class SimpleDataSource implements DataSource {
[javac] ^
[javac] D:\Hudson\jobs\iaf-ibatis\workspace\src\com\ibatis\sqlmap\engine\type\CallableStatementResultSet.java:29: com.ibatis.sqlmap.engine.type.CallableStatementResultSet 不是抽象的,并且未覆盖 java.sql.ResultSet 中的抽象方法 updateNClob(java.lang.String,java.io.Reader)
[javac] public class CallableStatementResultSet implements ResultSet {
[javac] ^
[javac] 注意:某些输入文件使用或覆盖了已过时的 API。
[javac] 注意:要了解详细信息,请使用 -Xlint:deprecation 重新编译。
[javac] 2 错误
BUILD FAILED
D:\Hudson\jobs\iaf-ibatis\workspace\build.xml:47: The following error occurred while executing this line:
D:\Hudson\jobs\iaf-ibatis\workspace\build.xml:34: Compile failed; see the compiler error output for details.
Total time: 1 second
Finished: FAILURE
发表评论
-
基于Oracle Streams + Oracle AQ 捕获变更,发布变更(二)
2014-11-21 22:23 3169要求:使用Oracle Streams捕获某个用户下部 ... -
基于Oracle Streams + Oracle AQ 捕获变更,发布变更(一)
2014-11-20 22:23 2725要求:使用Oracle Streams捕获某个用户下部分表 ... -
如何去掉在浏览器中打开java applet时的警告对话框
2013-08-24 12:10 6957好久没更新博客了! 最近,由于项目要求,需要将sw ... -
Android 内存泄露笔记
2013-03-05 23:10 01、大部分内存泄露都是错误的持有了Activity或者Con ... -
java 虚拟机总结 【思维导图】
2012-12-22 20:11 2064java虚拟机总结思维导图: 参考《深入理解jav ... -
Java虚拟机字节码执行引擎 【思维导图】
2012-12-22 19:51 1601java虚拟机字节码执行引擎思维导图总结: 参考《深入理 ... -
java 垃圾回收相关总结 【思维导图】
2012-12-21 19:03 3239java垃圾回收相关总结: 参考《深入理解java ... -
java并发中的延迟初始化
2012-12-12 19:17 4655在《java并发编程实战 ... -
java同步容器与并发容器
2012-12-09 18:07 4313何为同步容器:可以简 ... -
一个看似线程安全的示例
2012-12-09 14:56 4987在《java并发编程实战》第四章4.4.1节给出了一个程序示 ... -
多线程中的long和double
2012-12-08 19:26 4134在看一些代码的时候,会发现在定义long型和double型的 ... -
多线程中共享对象的可见性
2012-12-08 18:52 5069在阅读《java并发编程实战》的第三章的时候,看到书中的一个 ... -
一个快速、轻量级 Collection 库 Trove
2012-12-07 09:35 3707Trove一个快速、轻量级针对java原子类型(byte,i ... -
java 中的Unsafe
2012-12-05 22:25 32683在阅读AtomicInteger的源码时,看到了这个类:su ... -
在ubuntu10上编译Thrift0.8.0
2012-08-01 15:34 2111下载thrift0.8.0 ,地址: http:// ... -
生活小工具--记账小助手1.0发布
2012-05-31 15:08 1651因为自己平时喜欢记账,把每日的消费情况都记录下来,所以希望找 ... -
话费速查升级版v1.3发布
2012-05-04 12:47 1382前段时间开发了一个话费速查的小应用,最近一直保持每周更新一个 ... -
编译zeromq的java绑定:jzmq
2012-05-03 22:47 134951、 下载zeromq源码:http://www.ze ... -
Android软件包静默安装小应用 - 附源码
2012-04-21 20:50 12351老早之前,写了一个android软件包静默安装的应用,放在工 ... -
最方便的联通话费,余额查询软件来了! --- 联通话费速查v1.2
2012-04-12 18:01 3962软件介绍: 联通话费速查是一款针对联通 ...
相关推荐
他将告诉读者在您的应用开发环境下(实例中包含Windows XP+Tomcat6或Ubuntu Linux+JBoss AS )如何搭建一个Hudson服务器环境,还包含了Hudson中许多配置项的概述,和执行一个自动编译、测试、报告过程的示例。
Hudson 是一种革命性的开放源码 CI (持续集成)服务器,它从以前的 CI 服务器吸取了许多经验教训。Hudson 最吸引人的特性之一是它很容易配置:很难找到更容易设置的 CI 服务器,也很难找到开箱即用特性如此丰富的 CI ...
项目中搭建你的持续集成服务器。 这是受到 Sebastian Bergmann () 的启发。 要求 在您的 jenkins 实例上,您必须安装一些 QA python 工具: $ (sudo) apt-get install sloccount $ (sudo) pip install pylint $ ...
在线教学质量评价系统可以方便和全面地收集教师教学工作的数据,提供师生网上评教的评分结果,快速集中收集各方面的评教信息,使教务管理部门能够及时了解教学动态和师资情况,为教务老师提供相关决策支持,为职称评聘提供教学工作质量的科学依据,同时减轻了教务老师的工作量。
python-3.10.7-amd64.zip
自研扩散模型高光谱修复网络 基于MST_Plus_Plus 网络改造。 试验数据 扩散模型loss初步测试降到了0.005,比不加扩散loss小了20倍, 训练入口 train_cos_img.py
企业数据治理之数据安全治理方案
这是历年的毕业设计的项目,基于Android的一个红外防盗报警。需要自己添加蜂鸣器和热释电的硬件访问服务。
短视频用户价值研究报告2022
基于springboot的java毕业&课程设计
可运行源码(含数据库脚本)+开发文档+lw(高分毕设项目) java期末大作业毕业设计项目管理系统计算机软件工程大数据专业 内容概要:首先在日常的出行中,老旧城区道路狭窄,容易造成车辆的堵塞,每天早晚,接送孩子的车辆数密集,会造成相应的交通堵塞情况。而同样的,在停车的管理上,一方面我国的停车场面积较少,停车位一位难求,特别是在现在的一些小区里,为了抢停车位而产生的矛盾也日益突出。另一方面在停车场的管理上也存在着较大的管理问题,进车容易出车难是当下的停车场所出现的主要问题。而现在的停车场管理系统眼花缭乱,效果水平也良莠不齐,停车场的管理是当下各大城市的公共设施发展的一大难题,而国家、各大省市也都开 全套项目源码+详尽文档,一站式解决您的学习与项目需求。 适用人群: 计算机、通信、人工智能、自动化等专业的学生、老师及从业者。 使用场景及目标: 无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。 项目代码经过调试测试,确保直接运行,节省您的时间和精力。 其他说明: 项目整体具有较高的学习借鉴价值,基础能力强的可以在此基础上修改调整,以实现不同的功能。
基于springboot的java毕业&课程设计
微信小程序设计之相关行业源码及图文导入教程
网络游戏开发是一项很大的工程,需要很多综合性的知识。这对于刚刚入门的开发者来说很难理解。本论文从研究开发一个模仿泡泡堂网络游戏的例子出发,讲述网络游戏开发中用到的一些最基本的知识和设计思想,使大家清晰的理解游戏开发的过程。 整个设计中利用java中的swing编程,结合游戏的操作流程,对整个游戏进行精心的设计和大量的测试,实现游戏软件服务器端和客户端的开发,为玩家提供一个友好美观的操作界面,并添加聊天等功能以增加玩家之间的互动性,此外实现了可编辑场景地图的功能,使得游戏内容的更加丰富,玩家交互性更好,确保了游戏更具有趣味性、灵活性,以满足玩家对这款网络游戏的要求。
外东洪路中段.m4a
软考3333333333
附件是Elasticsearch 的全文搜索功能使用方法,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。