'2008/06'에 해당되는 글 5건
- 2008/06/08 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법..
- 2008/06/08 앤트(Ant)에서 톰캣을 실행/중지해 보아요. (4)
- 2008/06/08 앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서..
- 2008/06/04 앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요.
- 2008/06/04 앤트(Ant)의 명령행에서 정의되는 프로퍼티의 제한에 대하여..
톰캣에 웹 애플리케이션을 디플로이하는 방법에는 두 가지가 있어요.
context 파일 내용은 대략 다음과 같아요.
첫번째 방법이 보통 많이 쓰이는 방법이죠. 저는 두번째 방법을 더 선호합니다만..
그런데 사실 한 가지 방법이 더 있습니다.
톰캣의 manager 어플리케이션을 이용하는 것입니다. ^-^/
톰캣의 manager 어플리케이션을 사용하려면 다음을 확인합니다.
1.톰캣에 manager 어플리케이션이 설치되어 있는지 확인한다.
(5.0, 5.5, 6.0 버전 모두 기본적으로 설치되어 있네요..)
2. manager 권한이 있는 사용자를 등록한다.
${톰캣_설치_경로}\conf\tomcat-users.xml 파일에 다음 내용을 추가합니다.
3. 서버를 띄우고 http://localhost:8080/manager/html 로 접속합니다.
(등록한 사용자의 아이디/암호를 입력합니다.)
다음과 같은 화면에서 Deploy를 실행하면 됩니다.
Context 파일 내용을 설정하거나 war 파일을 업로드해서 디플로이할 수 있습니다.
그리고 매니저에서는 다른 웹 애플리케이션을 실행/중지/리로드/언디플로이할 수 있어요~
이제부터 본론으로 들어갑니다.
제가 말씀드릴 앤트로 톰캣에 웹 애플리케이션을 디플로이하는 방법은 내부적으로 톰캣의 manager 애플리케이션을 이용합니다. 그러므로 먼저 톰캣의 manager 애플리케이션이 설정이 되어있어야 해요~!
빌드 파일에서 사용할 프로퍼티 파일은 다음과 같습니다. (sample 어플리케이션을 배포한다고 가정합니다.)
그리고 태스크 정의 파일이 필요합니다. 다음과 같은 내용으로 catalina.tasks 라는 파일을 만듭니다.
또 어플리케이션 컨텍스트 설정 파일이 필요합니다. 다음과 같은 내용으로 sample.xml 이라는 파일을 만듭니다.
마지막으로 빌드 파일 내용은 다음과 같습니다.
먼저 태스크 정의 파일을 설정해야 합니다.
그러면 다음과 같은 태스크들을 사용할 수 있어요.
디플로이 태스크를 자세히 살펴보죠.
config 속성에 애플리케이션의 컨텍스트 설정 파일의 위치를 입력하는데요..
config 속성 대신에 war 속성을 써서 애플리케이션 war 파일의 위치를 입력할 수도 있어요.
두 속성은 반드시 어느 하나만 써야해요. 안 그러면 에러날 걸~?
톰캣의 앤트태스크를 이용하면 애플리케이션을 디플로이하는 것 뿐만 아니라 웹 어플리케이션의 목록을 보는 것, 애플리케이션을 실행하거나 중지하는 것 등등의 작업을 앤트로 할 수가 있어요. 이게 다 톰캣 개발자들이 앤트 태스크를 쓰기 좋게 만들어둔 덕분이죠. 감사감사 ^^*
보면 볼수록 앤트는 멋진 것 같아요.
- ${톰캣_설치_경로}1/webapps 디렉토리에 war 파일을 추가한다.
- ${톰캣_설치_경로}/conf/Catalina/localhost 디렉토리에 context 파일을 추가한다.
context 파일 내용은 대략 다음과 같아요.
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/${웹애플리케이션_이름}" docBase="${웹애플리케이션_디렉토리}" reloadable="true">
</Context>
<Context path="/${웹애플리케이션_이름}" docBase="${웹애플리케이션_디렉토리}" reloadable="true">
</Context>
첫번째 방법이 보통 많이 쓰이는 방법이죠. 저는 두번째 방법을 더 선호합니다만..
그런데 사실 한 가지 방법이 더 있습니다.
톰캣의 manager 어플리케이션을 이용하는 것입니다. ^-^/
톰캣의 manager 어플리케이션을 사용하려면 다음을 확인합니다.
1.톰캣에 manager 어플리케이션이 설치되어 있는지 확인한다.
(5.0, 5.5, 6.0 버전 모두 기본적으로 설치되어 있네요..)
2. manager 권한이 있는 사용자를 등록한다.
${톰캣_설치_경로}\conf\tomcat-users.xml 파일에 다음 내용을 추가합니다.
<role rolename="manager"/>
<user username="${사용자_아이디}" password="${사용자_암호}" roles="manager"/>
<user username="${사용자_아이디}" password="${사용자_암호}" roles="manager"/>
3. 서버를 띄우고 http://localhost:8080/manager/html 로 접속합니다.
(등록한 사용자의 아이디/암호를 입력합니다.)
다음과 같은 화면에서 Deploy를 실행하면 됩니다.
Context 파일 내용을 설정하거나 war 파일을 업로드해서 디플로이할 수 있습니다.
그리고 매니저에서는 다른 웹 애플리케이션을 실행/중지/리로드/언디플로이할 수 있어요~
이제부터 본론으로 들어갑니다.
제가 말씀드릴 앤트로 톰캣에 웹 애플리케이션을 디플로이하는 방법은 내부적으로 톰캣의 manager 애플리케이션을 이용합니다. 그러므로 먼저 톰캣의 manager 애플리케이션이 설정이 되어있어야 해요~!
빌드 파일에서 사용할 프로퍼티 파일은 다음과 같습니다. (sample 어플리케이션을 배포한다고 가정합니다.)
# catalina home directory
catalina.home=C:\Tomcat2
catalina.ant.jar=${catalina.home}/server/lib/catalina-ant.jar
catalina.tasks.file=catalina.tasks3
# catalina manager configurations
catalina.manager.url=http://localhost:8080/manager
catalina.manager.user.name=test4
catalina.manager.user.password=test
# application configurations
application.path=/sample5
application.context=sample.xml6
catalina.home=C:\Tomcat2
catalina.ant.jar=${catalina.home}/server/lib/catalina-ant.jar
catalina.tasks.file=catalina.tasks3
# catalina manager configurations
catalina.manager.url=http://localhost:8080/manager
catalina.manager.user.name=test4
catalina.manager.user.password=test
# application configurations
application.path=/sample5
application.context=sample.xml6
그리고 태스크 정의 파일이 필요합니다. 다음과 같은 내용으로 catalina.tasks 라는 파일을 만듭니다.
# catalina tasks properties
deploy=org.apache.catalina.ant.DeployTask
undeploy=org.apache.catalina.ant.UndeployTask
start=org.apache.catalina.ant.StartTask
reload=org.apache.catalina.ant.ReloadTask
stop=org.apache.catalina.ant.StopTask
sessions=org.apache.catalina.ant.SessionsTask
list=org.apache.catalina.ant.ListTask
serverinfo=org.apache.catalina.ant.ServerinfoTask
roles=org.apache.catalina.ant.RolesTask
resources=org.apache.catalina.ant.ResourcesTask
deploy=org.apache.catalina.ant.DeployTask
undeploy=org.apache.catalina.ant.UndeployTask
start=org.apache.catalina.ant.StartTask
reload=org.apache.catalina.ant.ReloadTask
stop=org.apache.catalina.ant.StopTask
sessions=org.apache.catalina.ant.SessionsTask
list=org.apache.catalina.ant.ListTask
serverinfo=org.apache.catalina.ant.ServerinfoTask
roles=org.apache.catalina.ant.RolesTask
resources=org.apache.catalina.ant.ResourcesTask
또 어플리케이션 컨텍스트 설정 파일이 필요합니다. 다음과 같은 내용으로 sample.xml 이라는 파일을 만듭니다.
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/sample" docBase="C:\Sample7" debug="0" privileged="true" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost.sample." suffix=".txt" timestamp="true" />
</Context>
<Context path="/sample" docBase="C:\Sample7" debug="0" privileged="true" reloadable="true">
<Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost.sample." suffix=".txt" timestamp="true" />
</Context>
마지막으로 빌드 파일 내용은 다음과 같습니다.
먼저 태스크 정의 파일을 설정해야 합니다.
<taskdef file="catalina.tasks" classpath="${catalina.ant.jar}" />
그러면 다음과 같은 태스크들을 사용할 수 있어요.
<target name="catalina.deploy" description="Deploy web application">
<deploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" config="${application.context}" update="true" />
</target>
<target name="catalina.undeploy" description="Undeploy web application">
<undeploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.start" description="Start web application">
<start url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.reload" description="Reload web application">
<reload url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.stop" description="Stop web application">
<stop url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.sessions" description="View server information">
<sessions url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.list" description="List web applications">
<list url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
<target name="catalina.serverinfo" description="View server information">
<serverinfo url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
<target name="catalina.roles" description="View server information">
<roles url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
<target name="catalina.resources" description="View server information">
<resources url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
<deploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" config="${application.context}" update="true" />
</target>
<target name="catalina.undeploy" description="Undeploy web application">
<undeploy url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.start" description="Start web application">
<start url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.reload" description="Reload web application">
<reload url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.stop" description="Stop web application">
<stop url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.sessions" description="View server information">
<sessions url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" path="${application.path}" />
</target>
<target name="catalina.list" description="List web applications">
<list url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
<target name="catalina.serverinfo" description="View server information">
<serverinfo url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
<target name="catalina.roles" description="View server information">
<roles url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
<target name="catalina.resources" description="View server information">
<resources url="${catalina.manager.url}" username="${catalina.manager.user.name}" password="${catalina.manager.user.password}" />
</target>
디플로이 태스크를 자세히 살펴보죠.
<deploy
url="${catalina.manager.url}" username="${catalina.manager.user.name}"
password="${catalina.manager.user.password}" path="${application.path}"
config="${application.context}" update="true" />
config 속성에 애플리케이션의 컨텍스트 설정 파일의 위치를 입력하는데요..
config 속성 대신에 war 속성을 써서 애플리케이션 war 파일의 위치를 입력할 수도 있어요.
두 속성은 반드시 어느 하나만 써야해요. 안 그러면 에러날 걸~?
톰캣의 앤트태스크를 이용하면 애플리케이션을 디플로이하는 것 뿐만 아니라 웹 어플리케이션의 목록을 보는 것, 애플리케이션을 실행하거나 중지하는 것 등등의 작업을 앤트로 할 수가 있어요. 이게 다 톰캣 개발자들이 앤트 태스크를 쓰기 좋게 만들어둔 덕분이죠. 감사감사 ^^*
보면 볼수록 앤트는 멋진 것 같아요.
환경:
Tomcat 5.0 or 5.5
Ant 1.7.0
'개발 > 자동화' 카테고리의 다른 글
| 메이븐(Maven) 시작하기 (2/3) (4) | 2009/10/09 |
|---|---|
| 메이븐(Maven) 시작하기 (1/3) (0) | 2009/10/09 |
| 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법.. (0) | 2008/06/08 |
| 앤트(Ant)에서 톰캣을 실행/중지해 보아요. (4) | 2008/06/08 |
| 앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서.. (0) | 2008/06/08 |
| 앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요. (0) | 2008/06/04 |
앤트에서 톰캣을 실행하거나 중지해 보아요.
방법은 간단해요. <java /> 태스크로 org.apache.catalina.startup.Bootstrap 클래스를 실행하면 돼요.
다만 프로퍼티 옵션이나 환경 변수 등의 실행 옵션을 잘 주어야 해요.
다음과 같이 해 보아요.
build.properties
build.xml
방법은 간단해요. <java /> 태스크로 org.apache.catalina.startup.Bootstrap 클래스를 실행하면 돼요.
다만 프로퍼티 옵션이나 환경 변수 등의 실행 옵션을 잘 주어야 해요.
다음과 같이 해 보아요.
build.properties
java_home=C:/Program Files/Java/jdk1.5.0_14 catalina.home=C:/Programz/Tomcat/5.5 catalina.base=C:/Project/Tomcat/Configuration
java.home 이라는 프로퍼티가 이미 존재(자동으로 생성)하기 때문에, java_home 이라는 이름으로 만들었어요.
build.xml
<project name="history" default="default" basedir=".">
<property file="build.properties" />
<target name="default">
<echo message="이것은 'Ant Tomcat Container'의 빌드 파일이에요." />
<echo message="앤트(ant) 1.7.0 버전에 최적화되어 있어요." />
<echo message="사용법:" />
<echo message="ant tomcat.start" />
<echo message="ant tomcat.stop" />
<echo message="참고:" />
<echo message="java.home = ${java.home}" />
<echo message="java_home = ${java_home}" />
<echo message="catalina.home = ${catalina.home}" />
<echo message="catalina.base = ${catalina.base}" />
</target>
<target name="tomcat.start">
<java classname="org.apache.catalina.startup.Bootstrap" jvm="${java_home}/bin/java" fork="true" spawn="true">
<classpath>
<fileset dir="${catalina.home}/bin">
<include name="bootstrap.jar" />
</fileset>
</classpath>
<arg value="start" />
<sysproperty key="catalina.home" value="${catalina.home}" />
<sysproperty key="java.endorsed.dirs" value="${catalina.home}/common/endorsed" />
<sysproperty key="java.util.logging.manager" value="org.apache.juli.ClassLoaderLogManager" />
<sysproperty key="java.util.logging.config.file" value="${catalina.home}/conf/logging.properties" />
<sysproperty key="catalina.base" value="${catalina.base}" />
<sysproperty key="java.io.tmpdir" value="${catalina.base}/temp" />
</java>
</target>
<target name="tomcat.stop">
<java classname="org.apache.catalina.startup.Bootstrap" jvm="${java_home}/bin/java" fork="true" spawn="true">
<classpath>
<fileset dir="${catalina.home}/bin">
<include name="bootstrap.jar" />
</fileset>
</classpath>
<arg value="stop" />
<sysproperty key="catalina.base" value="${catalina.home}" />
<sysproperty key="catalina.home" value="${catalina.home}" />
<sysproperty key="java.endorsed.dirs" value="${catalina.home}/common/endorsed" />
<sysproperty key="java.util.logging.manager" value="org.apache.juli.ClassLoaderLogManager" />
<sysproperty key="java.util.logging.config.file" value="${catalina.home}/conf/logging.properties" />
<sysproperty key="java.io.tmpdir" value="${catalina.home}/temp" />
</java>
</target>
</project>
톰캣은 JRE가 아니라 JDK로 실행시켜야 하기 때문에 <java /> 태스크의 jvm 속성으로 JDK의 java를 지정했어요.
그리고 새로운 JVM에서 실행이 되도록 fork 속성을, 앤트의 JVM이 종료되더라도 톰캣의 JVM이 계속 남아 있게 하기 위해서 spawn 속성을 true로 지정했어요.
그리고 새로운 JVM에서 실행이 되도록 fork 속성을, 앤트의 JVM이 종료되더라도 톰캣의 JVM이 계속 남아 있게 하기 위해서 spawn 속성을 true로 지정했어요.
환경:
Ant 1.7.0
Tomcat 5.0 or 5.5
Ant 1.7.0
Tomcat 5.0 or 5.5
'개발 > 자동화' 카테고리의 다른 글
| 메이븐(Maven) 시작하기 (1/3) (0) | 2009/10/09 |
|---|---|
| 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법.. (0) | 2008/06/08 |
| 앤트(Ant)에서 톰캣을 실행/중지해 보아요. (4) | 2008/06/08 |
| 앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서.. (0) | 2008/06/08 |
| 앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요. (0) | 2008/06/04 |
| 앤트(Ant)의 명령행에서 정의되는 프로퍼티의 제한에 대하여.. (0) | 2008/06/04 |
디렉토리 구분자의 제한
Ant에서는 경로를 나타낼 때, 디렉토리 구분자로 '/'와 '\'를 모두 사용할 수 있어요.
프로퍼티 파일 간 참조의 제한
Ant의 프로퍼티는 전방참조(forward-reference)와 후방참조(backward-reference)가 모두 가능하죠.
그러나 위와 같이 프로퍼티 파일을 2개 사용할 때, 첫번째 프로퍼티 파일에서 두번째 프로퍼티 파일에 존재하는 프로퍼티는 접근할 수 없어요(전방참조 불가).
Ant에서는 경로를 나타낼 때, 디렉토리 구분자로 '/'와 '\'를 모두 사용할 수 있어요.
Ant는 두 가지 슬래시 모두를 사용한다고 해서 부끄러워하지 않으며, 오히려 그것을 자랑스럽게 생각한다.
- 자바의 또 다른 멋진 도구 Ant
그러나 프로퍼티 파일에서 경로를 지정할 때 '\'를 사용하고 싶으면, '\\'로 써야해요.
왜냐하면 자바에서는 '\' 문자를 이스케이프 문자로 취급하기 때문이지요.
왜냐하면 자바에서는 '\' 문자를 이스케이프 문자로 취급하기 때문이지요.
프로퍼티 파일 간 참조의 제한
Ant의 프로퍼티는 전방참조(forward-reference)와 후방참조(backward-reference)가 모두 가능하죠.
<property file="first.properties" />
<property file="second.properties" />
<property file="second.properties" />
그러나 위와 같이 프로퍼티 파일을 2개 사용할 때, 첫번째 프로퍼티 파일에서 두번째 프로퍼티 파일에 존재하는 프로퍼티는 접근할 수 없어요(전방참조 불가).
그러므로 단일 파일에서만 전방 참조가 가능한 것이죠.
build.properties
first.properties
second.properties
build.xml
사용법:
디렉토리 구분자 예제:
프로퍼티 파일 간 참조 예제:
# common build properties
net=./net
net.kjunine=${net}/kjunine
net.other=.\\net
net.kjunine.other=${net.other}\\kjunine
first.properties
# first properties file
first=first
first.second=${first}.${second}
second.properties
# second properties file
second=second
second.first=${second}.${first}
build.xml
<project name="Ant Project" default="default" basedir=".">
<!-- START: PROPERTY -->
<property file="build.properties" />
<property file="first.properties" />
<property file="second.properties" />
<!-- END: PROPERTY -->
<!-- START: DEFAULT -->
<target name="default">
<echo message="이것은 'Ant Property PropertiesFile'의 빌드 파일이에요." />
<echo message="앤트(ant) 1.7.0 버전에 최적화되어 있어요." />
<echo message="사용법:" />
<echo message=" ant directorydelimiter" />
<echo message=" ant betweenproperties" />
</target>
<!-- END: DEFAULT -->
<!-- START: DIRECTORY DELIMITER-->
<target name="directorydelimiter">
<echo message="net.kjunine = ${net.kjunine}" />
<echo message="net.kjunine.other = ${net.kjunine.other}" />
<mkdir dir="${net.kjunine}" />
<delete dir="${net}" />
<touch file="${net.kjunine.other}" mkdirs="true" />
<delete dir="${net}" />
</target>
<!-- END: DIRECTORY DELIMITER -->
<!-- START: BETWEEN PROPERTIES-->
<target name="betweenproperties">
<echo message="first = ${first}" />
<echo message="second = ${second}" />
<echo message="first.second = ${first.second}" />
<echo message="second.first = ${second.first}" />
</target>
<!-- END: BETWEEN PROPERTIES -->
</project>
사용법:
ant
default:
[echo] 이것은 'Ant Property PropertiesFile'의 빌드 파일이에요.
[echo] 앤트(ant) 1.7.0 버전에 최적화되어 있어요.
[echo] 사용법:
[echo] ant directorydelimiter
[echo] ant betweenproperties
[echo] 이것은 'Ant Property PropertiesFile'의 빌드 파일이에요.
[echo] 앤트(ant) 1.7.0 버전에 최적화되어 있어요.
[echo] 사용법:
[echo] ant directorydelimiter
[echo] ant betweenproperties
디렉토리 구분자 예제:
ant directorydelimiter
directorydelimiter:
[echo] net.kjunine = ./net/kjunine
[echo] net.kjunine.other = .\net\kjunine
[mkdir] Created dir: C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net\kjunine
[delete] Deleting directory C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net
[touch] Creating C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net\kjunine
[delete] Deleting directory C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net
[echo] net.kjunine = ./net/kjunine
[echo] net.kjunine.other = .\net\kjunine
[mkdir] Created dir: C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net\kjunine
[delete] Deleting directory C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net
[touch] Creating C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net\kjunine
[delete] Deleting directory C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net
프로퍼티 파일 간 참조 예제:
ant betweenproperties
betweenproperties:
[echo] first = first
[echo] second = second
[echo] first.second = first.${second}
[echo] second.first = second.first
[echo] first = first
[echo] second = second
[echo] first.second = first.${second}
[echo] second.first = second.first
환경:
Ant 1.7.0
Ant 1.7.0
'개발 > 자동화' 카테고리의 다른 글
| 메이븐(Maven) 시작하기 (1/3) (0) | 2009/10/09 |
|---|---|
| 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법.. (0) | 2008/06/08 |
| 앤트(Ant)에서 톰캣을 실행/중지해 보아요. (4) | 2008/06/08 |
| 앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서.. (0) | 2008/06/08 |
| 앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요. (0) | 2008/06/04 |
| 앤트(Ant)의 명령행에서 정의되는 프로퍼티의 제한에 대하여.. (0) | 2008/06/04 |
앤트에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해 보아요.
그래서 다음과 같이 하면 돼요.
쉽게 생각하면 -propertyfile 옵션을 이용하면 될 것 같지요.
하지만 -propertyfile 옵션을 이용해 .properties 파일을 읽어들이면 심각한 문제가 있어요.
하지만 -propertyfile 옵션을 이용해 .properties 파일을 읽어들이면 심각한 문제가 있어요.
그래서 다음과 같이 하면 돼요.
default.user.properties
user1.properties
user2.properties
build.xml
사용법을 볼까요?
디폴트 사용자일 때..
사용자 1일 때..
사용자 2일 때..
# default user properties user.properties=default.user.properties
user1.properties
# user1 properties user.properties=user1.properties
user2.properties
# user2 properties user.properties=user2.properties
build.xml
<project name="Ant Project" default="default" basedir=".">
<!-- START: PROPERTY -->
<property file="${user.id}.properties" />
<property file="default.user.properties" />
<!-- END: PROPERTY -->
<!-- START: DEFAULT -->
<target name="default">
<echo message="이것은 'Ant Project'의 빌드 파일이에요." />
<echo message="앤트(ant) 1.7.0 버전에 최적화되어 있어요." />
<echo message="사용법:" />
<echo message=" ant userdependant" />
<echo message=" ant -Duser.id=user1 userdependant" />
<echo message=" ant -Duser.id=user2 userdependant" />
</target>
<!-- END: DEFAULT -->
<!-- START: USER DEPENDANT-->
<target name="userdependant">
<echo message="user.id = ${user.id}" />
<echo message="user.properties = ${user.properties}" />
</target>
<!-- END: USER DEPENDANT -->
</project>사용법을 볼까요?
ant
default:
[echo] 사용법:
[echo] ant userdependant
[echo] ant -Duser.id=user1 userdependant
[echo] ant -Duser.id=user2 userdependant
[echo] 사용법:
[echo] ant userdependant
[echo] ant -Duser.id=user1 userdependant
[echo] ant -Duser.id=user2 userdependant
디폴트 사용자일 때..
ant userdependant
userdependant:
[echo] user.id = ${user.id}
[echo] user.properties = default.user.properties
[echo] user.id = ${user.id}
[echo] user.properties = default.user.properties
user.id 프로퍼티가 없으면 build.xml에서 ${user.id}.properties 파일을 읽는 property 태스크는 무시되어요.
사용자 1일 때..
ant -Duser.id=user1 userdependant
userdependant:
[echo] user.id = user1
[echo] user.properties = user1.properties
[echo] user.id = user1
[echo] user.properties = user1.properties
사용자 2일 때..
ant -Duser.id=user2 userdependant
userdependant:
[echo] user.id = user2
[echo] user.properties = user2.properties
[echo] user.id = user2
[echo] user.properties = user2.properties
위와 같이 하면 사용자마다 다른 프로퍼티 파일을 읽을 수 있겠네요.
사용자마다 작업 디렉토리나 서버 설치 디렉토리가 다른 경우 등등에 적용할 수 있을 것 같아요.
사용자마다 작업 디렉토리나 서버 설치 디렉토리가 다른 경우 등등에 적용할 수 있을 것 같아요.
환경:
Ant 1.7.0
Ant 1.7.0
'개발 > 자동화' 카테고리의 다른 글
| 메이븐(Maven) 시작하기 (1/3) (0) | 2009/10/09 |
|---|---|
| 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법.. (0) | 2008/06/08 |
| 앤트(Ant)에서 톰캣을 실행/중지해 보아요. (4) | 2008/06/08 |
| 앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서.. (0) | 2008/06/08 |
| 앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요. (0) | 2008/06/04 |
| 앤트(Ant)의 명령행에서 정의되는 프로퍼티의 제한에 대하여.. (0) | 2008/06/04 |
명령행에서 정의되는 프로퍼티에서는 프로퍼티 중첩을 사용할 수 없어요.
다시 말하면, 명령행에서 프로퍼티를 정의할 때는 다른 프로퍼티를 이용할 수가 없어요.
다시 말하면, 명령행에서 프로퍼티를 정의할 때는 다른 프로퍼티를 이용할 수가 없어요.
즉, 이런 것을 못한다는 말이죠.
net.kjunine=net.kjunine
net.kjunine.ant=${net.kjunine}.ant
net.kjunine.ant=${net.kjunine}.ant
프로퍼티 참조를 뜻하는 ${..} 구문이 단순한 문자열로 인식되어요.
참고로 명령행에서 프로퍼티를 정의하려면 -D 옵션이나 -propertyfile 옵션을 사용하면 되요.
build.properties 파일:
build.xml 파일:
사용법을 보죠.
다음과 같이 각각 실행하고 결과를 보세요.
# common build properties
a=a
b=b
c=${a}+${b}
build.xml 파일:
<project name="Ant Property CommandLine" default="default" basedir=".">
<!-- START: PROPERTY -->
<property file="build.properties" />
<!-- END: PROPERTY -->
<!-- START: DEFAULT -->
<target name="default">
<echo message="사용법:" />
<echo message=" ant -Da=a -Db=b -Dc=$${a}+$${b} commandline" />
<echo message=" ant -propertyfile=build.properties commandline" />
<echo message=" ant commandline" />
</target>
<!-- END: DEFAULT -->
<!-- START: COMMAND LINE -->
<target name="commandline">
<echo message="a = ${a}" />
<echo message="b = ${b}" />
<echo message="c = ${c}" />
</target />
<!-- END: COMMAND LINE -->
</project>
사용법을 보죠.
ant
default:
[echo] 사용법:
[echo] ant -Da=a -Db=b -Dc=${a}+${b} commandline
[echo] ant -propertyfile=build.properties commandline
[echo] ant commandline
[echo] 사용법:
[echo] ant -Da=a -Db=b -Dc=${a}+${b} commandline
[echo] ant -propertyfile=build.properties commandline
[echo] ant commandline
다음과 같이 각각 실행하고 결과를 보세요.
ant -Da=a -Db=b -Dc=${a}+${b} commandline
commandline:
[echo] a = a
[echo] b = b
[echo] c = ${a}+${b}
[echo] a = a
[echo] b = b
[echo] c = ${a}+${b}
ant -propertyfile=build.properties commandline
commandline:
[echo] a = a
[echo] b = b
[echo] c = ${a}+${b}
[echo] a = a
[echo] b = b
[echo] c = ${a}+${b}
ant commandline
commandline:
[echo] a = a
[echo] b = b
[echo] c = a+b
[echo] a = a
[echo] b = b
[echo] c = a+b
<property> 태스크가 프로퍼티를 읽어들이기 전에 -D 옵션이나 -propertyfile 옵션으로 프로퍼티를 읽어들이면, c 프로퍼티의 내용이 문자열 그대로 보이는 것을 알 수 있어요.
환경:
Ant 1.7.0
Ant 1.7.0
'개발 > 자동화' 카테고리의 다른 글
| 메이븐(Maven) 시작하기 (1/3) (0) | 2009/10/09 |
|---|---|
| 앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법.. (0) | 2008/06/08 |
| 앤트(Ant)에서 톰캣을 실행/중지해 보아요. (4) | 2008/06/08 |
| 앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서.. (0) | 2008/06/08 |
| 앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요. (0) | 2008/06/04 |
| 앤트(Ant)의 명령행에서 정의되는 프로퍼티의 제한에 대하여.. (0) | 2008/06/04 |

Prev
RSS FEED
