文档章节

Cloudify源码分析——ant build解读

hjswust
 hjswust
发布于 2013/05/13 19:56
字数 2376
阅读 859
收藏 3

0.打包成可部署的zip:Cloudify ant cloudify.zip

<target name="cloudify.zip" depends="prepare.env, cloudify.install, prepare.cloudify.package.without.unzip" />

1.准备环境

Target:prepare.env——主要完成Xap的准备

完成工作:1)删除./tmp里的所有文件

2)创建新的“./tmp目录

3)查看Xap${xap.files.tmp.dir}/ ${xap.installation.dir}-b${gs.build.number}.zip是否存在,将结果存放到appropriate.xap.zip.present中。

其中${tmp.dir}=./temp

${xap.files.tmp.dir}=./xap.files.tmp.dir

${xap.installation.dir}=gigaspaces-xap-premium-${gs.version}-${gs.milestone}

${gs.version}=9.6.0

${gs.milestone}=m1

${gs.build.number}=9480-641

检查的文件是:.\xap.files.tmp.dir\gigaspaces-xap-premium-9.6.0-m1-b9480-641.zip

4)调用下载,会根据刚才的3)的结果来判断是否下载(1.1.

5)将Xap解压到${tmp.dir}目录下。

其中:${tmp.dir}=./tmp

6)移动${tmp.dir}/${xap.installation.dir}${tmp.dir}/${cloudify.installation.dir}

其中:即将文件夹gigaspaces-xap-premium-9.6.0-m1重名命为gigaspaces-cloudify-${cloudify.version}-${cloudify.milestone}

cloudify.version=2.6.0

cloudify.build.number=4980-309

cloudify.milestone=m1

7)将${tmp.dir}/${cloudify.installation.dir}目录下的脚本("**/*.sh, **/*groovy*")权限修改为775

<target name="prepare.env">

<loadproperties srcfile="${build.properties.file}"/>

<delete dir="${tmp.dir}"/>

<mkdir dir="${tmp.dir}"/>

<available file="${xap.files.tmp.dir}/${xap.zip.name}" property="appropriate.xap.zip.present"/>

<ant target="download.zip" />

<unzip src="${xap.files.tmp.dir}/${xap.zip.name}" dest="${tmp.dir}" />

<move file="${tmp.dir}/${xap.installation.dir}" tofile="${tmp.dir}/${cloudify.installation.dir}" />

<chmod dir="${tmp.dir}/${cloudify.installation.dir}" includes="**/*.sh, **/*groovy*" perm="775" />

</target>

1.1.下载:download.zip

完成工作:下载Xap,放在${xap.files.tmp.dir}目录下

<target name="download.zip" unless="appropriate.xap.zip.present">

<loadproperties srcfile="${build.properties.file}"/>

<mkdir dir="${xap.files.tmp.dir}" />

<echo message="Please wait. Downloading ${cloudify.cdn.publish.url}/com/gigaspaces/${s3.gs.publish.folder}/gigaspaces-xap-premium-${gs.version}-ga-b${gs.build.number}.zip." />

<get verbose="true" src="${cloudify.cdn.publish.url}/com/gigaspaces/xap-core/${s3.gs.publish.folder}/${xap.zip.name}" dest="${xap.files.tmp.dir}"/>

</target>

2.Cloudify安装:cloudify.install

完成工作:将完成CLIescesc-commandsUSMrestfuldslrest-clientmanagement-space这些模块的编译

1)在本地Respository中安装jar。在工作目录./下执行mavenmaven.batmaven),参数 clean install -Dmaven.test.skip=true

2)生成javadoc。在工作目录./下执行maven(maven.batmaven),参数 javadoc:javadoc -Dmaven.test.skip=true

3)生成restfulApi。在${basedir}/../restful目录下,执行 maven javadoc:javadoc -Dmaven.test.skip=true

<target name="cloudify.install">

<exec dir="${basedir}" executable="${mvn.executable}" failonerror="true">

<arg line="clean install -Dmaven.test.skip=true"/>

</exec>

<exec dir="${basedir}" executable="${mvn.executable}" failonerror="true">

<arg line="javadoc:javadoc -Dmaven.test.skip=true"/>

</exec>

<exec dir="${basedir}/../restful" executable="${mvn.executable}" failonerror="true">

<arg line="javadoc:javadoc -Dmaven.test.skip=true"/>

</exec>

</target>

3.准备cloudify、将其打包成zip——prepare.cloudify.package.without.unzip

完成工作:

1)执行update.gs.runtime,将Cloudify版本信息加入运行环境

2)执行remove.xap.related.modules,删除./tmp/gigaspaces-cloudify-2.6.0-m1中原xap中的一些模块

3)执行update.lus.groups,更新LUS Groups

4)添加cloudify的各个模块,到. /tmp/gigaspaces-cloudify-2.6.0-m1/

5)将一些recipe放到目标目录下,fetch.recipes.cloudify

6)移除dynamic_props.js

7)拷入notice.txt

8dos2unix操作

9)准备发布版()

10)打包

11)删除临时文件 ./tmp

<target name="prepare.cloudify.package.without.unzip">

<loadproperties srcfile="${build.properties.file}"/>

<ant target="update.gs.runtime" />

<ant target="remove.xap.related.modules" />

<ant target="update.lus.groups"/>

<add.cloudify.modules/>

<ant target="fetch.recipes.cloudify" />

<ant target="replace.xap.content.with.cloudify.related"/>

<ant target="replace.cloudify.notice"/>

<dos2unix dir="${tmp.dir}/${cloudify.installation.dir}" />

<!-- conditional task (with property: publish.cloudify.build) -->

<ant target="prepare.cloudify.for.publish" />

<ant target="archive.cloudify.versions"/>

<delete dir="${tmp.dir}"/>

</target>

3.1 更新Cloudify版本信息,update.gs.runtime

1)拷贝${gigaspaces.related.folder}/src/java下的com/j_spaces/kernel/${platform.verion.file.name}文件到临时源码目录

其中:${gigaspaces.related.folder} =${package.build}/gigaspaces

${package.build}=./package_build

实际上,是将./package_build/gigaspaces/src/java/com/j_spaces/kernel/CloudifyVersion.java文件拷到 src-tmp-dir

2javac 编译这个类文件

3)将其打包为jar,如果存在则更新或覆盖,打包到./tmp/gigaspaces-cloudify-2.6.0-m1/lib/required/gs-runtime.jar

4)将其打包为jar,如果存在则更新或覆盖,打包到./tmp/gigaspaces-cloudify-2.6.0-m1/lib/platform/boot/gs.boot.jar

5)删除临时源文件和目标文件。

<target name="update.gs.runtime">

<!-- define properties for temp directories -->

<property name="src.tmp.dir" value="src-tmp-dir"/>

<property name="dst.tmp.dir" value="dst-tmp-dir"/>

<!-- create temp directories -->

<mkdir dir="${src.tmp.dir}"/>

<mkdir dir="${dst.tmp.dir}"/>

<copy todir="${src.tmp.dir}">

<fileset dir="${gigaspaces.related.folder}/src/java">

<include name="com/j_spaces/kernel/${platform.verion.file.name}"/>

</fileset>

</copy>

<javac

classpath="${tmp.dir}/${cloudify.installation.dir}/lib/required/${gs.runtime.jar}"

nowarn="on"

srcdir="${src.tmp.dir}"

destdir="${dst.tmp.dir}"

debug="on"

memoryMaximumSize="512m"

fork="yes"

source="1.6">

</javac>

<jar jarfile="${tmp.dir}/${cloudify.installation.dir}/lib/required/${gs.runtime.jar}" update="true">

<fileset dir="${dst.tmp.dir}"/>

</jar>

<jar jarfile="${tmp.dir}/${cloudify.installation.dir}/lib/platform/boot/${gs.boot.jar}" update="true">

<fileset dir="${dst.tmp.dir}"/>

</jar>

<!-- delete temp folders -->

<delete dir="${src.tmp.dir}"/>

<delete dir="${dst.tmp.dir}"/>

</target>

3.2 删除xap目录中的一些模块,remove.xap.related.modules

完成工作:1)删除docs

2)删除examples

3)删除tools/benchmarkapachealert-integration

4)删除gslicense.xml

5)删除bin目录下的一些命令

<target name="remove.xap.related.modules">

<delete dir="${tmp.dir}/${cloudify.installation.dir}/docs" />

<delete file="${tmp.dir}/${cloudify.installation.dir}/lib/optional/openspaces/gs-openspaces-sources.zip" />

<delete dir="${tmp.dir}/${cloudify.installation.dir}/examples" />

<delete dir="${tmp.dir}/${cloudify.installation.dir}/tools/benchmark"/>

<delete dir="${tmp.dir}/${cloudify.installation.dir}/tools/apache"/>

<delete dir="${tmp.dir}/${cloudify.installation.dir}/tools/alert-integration"/>

<delete file="${tmp.dir}/${cloudify.installation.dir}/gslicense.xml"/>

<delete>

<fileset dir="${tmp.dir}/${cloudify.installation.dir}/bin" includes="gs-focalserver.*, gsInstance.*,

startJiniTxMahalo.*, puInstance.*, gs-memcached.*, gs-ui.*"/>

</delete>

</target>

3.3 更新LUS(Lookup Service)

完成工作:将./tmp/下的所有shbatxml中的LOOKUPGROUPS=(.*)替换为LOOKUPGROUPS=“${lookup.group}”

<target name="update.lus.groups">

<echo message="Updating LUS Groups in directory: ${tmp.dir}/${cloudify.installation.dir} ..."/>

<property name="lookup.group" value="gigaspaces-${CLOUDIFY}-${cloudify.version}-${cloudify.milestone}"/>

<replaceregexp match="LOOKUPGROUPS=(.*)" replace="LOOKUPGROUPS=&quot;${lookup.group}&quot;">

<fileset dir="${tmp.dir}/${cloudify.installation.dir}" includes="**/*.sh, **/*.bat, **/*.xml"/>

</replaceregexp>

</target>

3.4添加cloudify的各个模块

完成工作:

1)添加USM组件,从./../USM/target/usm.jar拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/lib/platform/usm/

1.1)添加esm组件,从./../esc/target/esc/lib/*.jar拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/lib/platform/esm/

2)添加dsl组件,./../dsl/target/dsl.jar拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/lib/platform/cloudify/

3)添加CLI组件,./../CLI/target/cli.jar./../CLI/cloudify.*拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/tools/cli/

3.1)添加cli命令到根中的bin,将./package.build/gigaspaces/bin/cloudify.*拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/bin

4)添加management-space组件,./../management-space/target/management-space.jar拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/tools/management-space/

5)添加Rest组件,./../restful/target/rest.war拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/tools/rest/

5.1)添加rest安全配置,./../restful/src/main/webapp/WEB-INF/spring-security.xml拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/config/security/

5.2)添加WebUI配置,./package.build/gs-webui/config/*.xml拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/config/

6)添加esc-command组件,./../esc-commands/target/esc-commands.jar拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/tools/cli/plugins/esc/

6.1)对不同云的支持,./../esc/src/main/resources/clouds/**/*拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/clouds/

<macrodef name="add.cloudify.modules">

<attribute name="installation.dir" default="${tmp.dir}/${cloudify.installation.dir}"/>

<sequential>

<echo message="Copy USM component"/>

<copy todir="@{installation.dir}/lib/platform/usm" overwrite="true">

<fileset dir="${usm.local.copy}/target/" includes="usm.jar" excludes=".svn"/>

</copy>

<copy todir="@{installation.dir}/lib/platform/esm" overwrite="true">

<fileset dir="${esc.local.copy}/target/esc/lib" includes="*.jar" excludes=".svn"/>

</copy>

<echo message="Copy dsl component"/>

<mkdir dir="@{installation.dir}/lib/platform/cloudify"/>

<copy todir="@{installation.dir}/lib/platform/cloudify" overwrite="true">

<fileset dir="${dsl.local.copy}/target/" includes="dsl.jar" excludes=".svn"/>

</copy>

<echo message="Copy CLOUDIFY CLI component"/>

<copy todir="@{installation.dir}/tools/cli/" overwrite="true">

<fileset dir="${cli.local.copy}/target/" includes="cli.jar" excludes=".svn"/>

<fileset dir="${cli.local.copy}/" includes="cloudify.*" excludes=".svn"/>

</copy>

<copy todir="@{installation.dir}/bin" overwrite="true">

<fileset dir="${gigaspaces.related.folder}/bin" includes="cloudify.*" excludes=".svn"/>

</copy>

<echo message="Copy management-space component"/>

<mkdir dir="@{installation.dir}/tools/management-space/" />

<copy todir="@{installation.dir}/tools/management-space/" overwrite="true">

<fileset dir="${management-space.local.copy}/target/" includes="management-space.jar" excludes=".svn"/>

</copy>

<echo message="Copy CLOUDIFY Rest component"/>

<copy todir="@{installation.dir}/tools/rest/" overwrite="true">

<fileset dir="${restful.local.copy}/target/" includes="rest.war" excludes=".svn"/>

</copy>

<copy todir="@{installation.dir}/config/security/" overwrite="true">

<fileset dir="${restful.local.copy}/src/main/webapp/WEB-INF" includes="spring-security.xml"/>

</copy>

<copy todir="@{installation.dir}/config" overwrite="true">

<fileset dir="${gs-webui.related.folder}/config" includes="*.xml"/>

</copy>

<echo message="Copy CLOUDIFY esc-command component"/>

<copy todir="@{installation.dir}/tools/cli/plugins/esc" overwrite="true">

<fileset dir="${esc-commands.local.copy}/target" includes="esc-commands.jar" excludes=".svn"/>

</copy>

<mkdir dir="@{installation.dir}/clouds/"/>

<copy todir="@{installation.dir}/clouds/" overwrite="true">

<fileset dir="${esc.local.copy}/src/main/resources/clouds" includes="**/*" excludes=".svn"/>

</copy>

</sequential>

</macrodef>

3.5加入recipes

完成工作:1)如果./../../cloudify-recipes目录存在进行后继工作。

2)。。。,我这里不存在前面这个目录

<condition property="recipes.available" value="true">

<available type="dir" file="${recipes.local.copy}"/>

</condition>

<target name="fetch.recipes.cloudify" if="recipes.available">

<echo message="Create and Copy recipes component for Cloudify"/>

<exec executable="${mvn.executable}" dir="${recipes.local.copy}">

<arg line="clean package" />

</exec>

<unzip src="${recipes.local.copy}/target/recipes.zip" dest="${tmp.dir}/${cloudify.installation.dir}/recipes" />

</target>

3.6替换replace.xap.content.with.cloudify.related

1)将./package_build/gigaspaces/START_HERE.htm拷贝到./tmp/gigaspaces-cloudify-2.6.0-m1/

2)将dynamic_props.js移除,重新打包gs-webui-2.6.0-SNAPSHOT.war

<target name="replace.xap.content.with.cloudify.related">

<copy todir="${tmp.dir}/${cloudify.installation.dir}" file="${gigaspaces.related.folder}/START_HERE.htm" overwrite="true"/>

<!-- replace dynamic_props.js in gs-webui war. WAS task doesn't update exisitng warfile

properly if the files that are intended to be added to warfile already appear in it. This is the reason for

temp file creation. -->

<war warfile="${tmp.dir}/${cloudify.installation.dir}/tools/gs-webui/tmp.${gs.webui.war}" needxmlfile="false">

<zipfileset src="${tmp.dir}/${cloudify.installation.dir}/tools/gs-webui/${gs.webui.war}"

includes="**/*" excludes="dynamic_props.js" filemode="775"/>

<zipfileset dir="${gs-webui.related.folder}/war" />

</war>

<delete file="${tmp.dir}/${cloudify.installation.dir}/tools/gs-webui/${gs.webui.war}"/>

<move file="${tmp.dir}/${cloudify.installation.dir}/tools/gs-webui/tmp.${gs.webui.war}" tofile="${tmp.dir}/${cloudify.installation.dir}/tools/gs-webui/${gs.webui.war}"/>

</target>

3.7 replace.cloudify.notice

完成工作:拷入notice.txt文件

<target name="replace.cloudify.notice">

<copy todir="${tmp.dir}/${cloudify.installation.dir}" file="${gigaspaces.related.folder}/notice.txt" overwrite="true"/>

</target>

3.8 dos2unix操作

<dos2unix dir="${tmp.dir}/${cloudify.installation.dir}" />

<macrodef name="dos2unix">

<attribute name="dir"/>

<sequential>

<!-- Replaces EOLs with LF characters and removes eof characters

from the shell scripts. Tabs and spaces are left as is. -->

<fixcrlf srcdir="@{dir}"

eol="lf"

eof="remove"

includes="**/*.sh"

defaultexcludes="no"

/>

<!-- Replaces all EOLs with cr-lf pairs in the batch files.

Tabs and spaces are left as is. EOF characters are left alone if run on DOS systems,

and are removed if run on Unix systems. -->

<fixcrlf srcdir="@{dir}"

eol="crlf"

includes="**/*.bat"

defaultexcludes="no"

/>

</sequential>

</macrodef>

3.9准备发布cloudify

1)更新本地文件中的cloudifyUrl

2)提交文件

<target name="prepare.cloudify.for.publish" description="publish cloudify build to gigaspaces repository" if="publish.cloudify.build">

<ant target="update.cloudify.service.configuration.url"/>

<ant target="commit.service.configuration" />

</target>

3.9.1 update.cloudify.service.configuration.url

完成工作:encode cloudify.url,更新源文件中的cloudifyUrl

1cloudify.url =http://repository.cloudifysource.org/org/cloudifysource/2.6.0-SNAPSHOT/gigaspaces-cloudify-2.6.0-m1-b4980-309.zip

2groovy.dir=./tmp/gigaspaces-cloudify-2.6.0-m1/tools/groovy/bin

3groovy.path=${groovy.dir}/groovy.bat

4)执行groovy -e "println(java.net.URLEncoder.encode('${cloudify.url}'))"

5)替换./tmp/gigaspaces-cloudify-2.6.0-m1/clouds/目录下的**/*-cloud.groovy 中的cloudifyUrl

6)替换${esc.local.copy}/src/main/resources/clouds/目录下的**/*-cloud.groovy 中的cloudifyUrl

<target name="update.cloudify.service.configuration.url" if="release.build">

<echo message="Updating ServiceConfiguration in directory: ${tmp.dir}/${cloudify.installation.dir}/clouds/ ..."/>

<property name="cloudify.url" value="${cloudify.cdn.publish.url}/${cloudify.put.target}" />

<!-- Here we encode cloudify.url -->

<property name="groovy.dir" value="${tmp.dir}/${cloudify.installation.dir}/tools/groovy/bin" />

<condition property="groovy.path" value="${groovy.dir}/groovy.bat">

<os family="windows"/>

</condition>

<condition property="groovy.path" value="${groovy.dir}/groovy">

<os family="unix"/>

</condition>

<exec executable="${groovy.path}" outputproperty="cloudify.url.encoded">

<env key="JAVA_HOME" value="${java.home}" />

<arg value="-e" />

<arg value="&quot;println(java.net.URLEncoder.encode('${cloudify.url}'))&quot;" />

</exec>

<!-- Update files in ${tmp.dir}/${cloudify.installation.dir} and in source folders -->

<replaceregexp byline="true"

match="cloudifyUrl &quot;(.*)&quot;"

replace="cloudifyUrl &quot;${cloudify.url}&quot;" >

<fileset

dir="${tmp.dir}/${cloudify.installation.dir}/clouds/"

includes="**/*-cloud.groovy" />

<fileset

dir="${esc.local.copy}/src/main/resources/clouds"

includes="**/*-cloud.groovy" />

</replaceregexp>

</target>

3.9.2 commit.service.configuration

完成工作:提交文件

1)执行 git checkout ${branchname} 工作目录./../esc

2)执行 git pull

3)执行 git add .

4)执行 git commit –m Update cloudify url

5)执行 git push

<target name="commit.service.configuration">

<exec executable="git" dir="${esc.local.copy}">

<arg value="checkout" />

<arg value="${branchname}" />

</exec>

<exec executable="git" dir="${esc.local.copy}">

<arg line="pull" />

</exec>

<exec executable="git" dir="${esc.local.copy}">

<arg line="add ." />

</exec>

<exec executable="git" dir="${esc.local.copy}">

<arg value="commit" />

<arg value="-m" />

<arg value="Update cloudify url" />

</exec>

<exec executable="git" dir="${esc.local.copy}">

<arg value="push" />

</exec>

</target>

3.10打包

完成工作:打包,添加javadoc

1) 删除 ./releases/build_4980-309/目录

2) 创建 ./releases/build_4980-309/cloudify/1.5/目录

3) 将 ./tmp/**/*打包为./releases/build_4980-309/cloudify/1.5/gigaspaces-cloudify-2.6.0-m1-b4980-309.zip

4) 将zip打包成tar

5) 添加apidocs包到./releases/build_4980-309/docs/cloudify-javadoc.zip

6) 添加rest文档restdoclet.html

<target name="archive.cloudify.versions">

<delete dir="${releases.dir}/build_${cloudify.build.number}"/>

<mkdir dir="${releases.dir}/build_${cloudify.build.number}/${cloudify}/1.5"/>

<zip destfile="${releases.dir}/build_${cloudify.build.number}/${cloudify}/1.5/gigaspaces-${cloudify}-${cloudify.version}-${cloudify.milestone}-b${cloudify.build.number}.zip">

<zipfileset dir="${tmp.dir}" includes="**/*" filemode="775"/>

</zip>

<tar destfile="${releases.dir}/build_${cloudify.build.number}/${cloudify}/1.5/gigaspaces-${cloudify}-${cloudify.version}-${cloudify.milestone}-b${cloudify.build.number}.tar.gz" compression="gzip">

<zipfileset src="${releases.dir}/build_${cloudify.build.number}/${cloudify}/1.5/gigaspaces-${cloudify}-${cloudify.version}-${cloudify.milestone}-b${cloudify.build.number}.zip"/>

</tar>

<!-- Add Cloudify Javadoc archive to Cloudify/docs folder. If the folder doesn't exist please run: mvn javadoc:javadoc -->

<mkdir dir="${releases.dir}/build_${cloudify.build.number}/docs" />

<zip file="${releases.dir}/build_${cloudify.build.number}/docs/${cloudify}-javadoc.zip">

<fileset dir="${basedir}/target/site/apidocs"/>

</zip>

<mkdir dir="${releases.dir}/build_${cloudify.build.number}/docs/restdoclet" />

<copy todir="${releases.dir}/build_${cloudify.build.number}/docs/restdoclet" >

<fileset file="${restful.local.copy}/target/site/restdoclet/restdoclet.html"/>

<fileset file="${restful.local.copy}/src/main/webapp/resources/restdoclet/restdoclet.css"/>

</copy>

</target>

© 著作权归作者所有

下一篇: Cloudify源码解读
hjswust
粉丝 13
博文 50
码字总数 35806
作品 0
绵阳
私信 提问
Eclipse导入Tomcat源码

想要研究下Tomcat的体系结构或者源码,最好将Tomcat的源码导入到ide中,编写实例进行代码跟踪(debug)。 这里参考了网上一些资料,将自己操作过程记个流水账。 准备: 1.Tomcat源码下载 这个...

jxlgzwh
2014/05/24
0
0
Eclipse导入Tomcat源码

最近有了看源码的冲动,刚把jvm虚拟机规范看了一遍,想借着看tomcat源码的机会,顺便实操下jvm虚拟机的一些东西,这样就有了搭建tomcat源码运行环境的念头。对着http://www.cnblogs.com/huan...

彭苏云
2014/04/29
0
0
Windows下搭建Jenkins+Jmeter+Ant 自动测试环境

1.JDK Jmeter Ant安装: 1.1. 安装JDK: 双击jdk-7u80-windows-x64.exe安装,默认安装到C:ProgramFilesJava目录 1.2. 安装Jmeter: 在我的电脑—E盘(建议与文档保持一致,否则需要修改配置文件...

hxlb2012
2018/06/26
0
0
《编写可维护的 JavaScript》读书笔记第14章:Ant

安装 运行 Ant 需要 Java 环境。 Windows 下的安装过程非常简单: 下载 Ant 压缩包 解压缩到某个目录 配置环境变量,将 {Ant 安装目录}bin 路径存在 PATH 中,用分号与其他路径隔开 进入 CM...

张前程
2014/01/05
0
0
Tomcat 源码的获取与部署

目的:获取tomcat源码,部署到eclipse进而分析tomcat的架构体系。 准备工作: svn客户端下载 ant下载,环境变量path配置到ant下面的bin tomcat项目的源码地址: http://svn.apache.org/repo...

java-苦苦甜甜
2013/06/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

由test_decoding学习如何编写PostgreSQL逻辑解码插件

PostgreSQL提供很多接口,允许用户定制自己需要的功能,很多时候文档并不能让我们完全理解和把握它们的使用。如果需要开发一个自己的功能,该如何下手?下边是我作为一名代码搬运工的工作方式...

有理想的猪
44分钟前
4
0
IT兄弟连 Java语法教程 流程控制语句 循环结构语句3

while循环 Java中的另外一种循环是while循环。while循环的语法格式如下: while(条件表达式){ 循环体; } 其中条件表达式定义了控制循环的条件,可以使任何有效的boolean表达式,条件为真时,...

老码农的一亩三分地
55分钟前
2
0
OSChina 周四乱弹 —— 你们倒是救驾啊,别笑啦

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @RISYOII :#今日歌曲推荐# 一荤一素 太年轻的人 他总是不满足 固执地不愿停下 远行的脚步 望着高高的天 走了长长的路 忘了回头看 她有没有哭...

小小编辑
今天
1K
15
idea下springboot 项目在static目录下添加文件不生效

idea下springboot 项目在static目录下添加文件不生效 问题描述 是这样子的,我的项目目录结构如下: 我在static目录下,创建了index.html和aaaa.jpg这两个文件。然后,启动服务访问 http://l...

wotrd
昨天
7
0
k8s1.14 一、环境

1. 4台虚拟机 (CentOS Linux release 7.2.1511 (Core) ) 192.168.130.211 master 192.168.130.212 node1 192.168.130.213 node2 192.168.130.214 node3 2. 设置服务器hostname 2.1 设置本机......

ThomasCheng
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部