- notice 스킨변경~
[Flex/AIR] ANT를 활용해 RSL(Runtime Shared Library)컴파일 삽질후기...
Posted in 플렉스(Flex) // Posted at 2009/06/20 21:05http://blog.jidolstar.com/505
mxmlc로 컴파일을 해본적이 없어서 작성하는데에 욕봤습니다.
우선 ANT에서 제공하는 태그들이 있는데요. 그걸 이용해서 하려고 하는데 잘 안돼서-_- 그냥 exec로 작성했습니다 ㅠㅠ
그냥 rsl을 사용하지 않은 프로젝트는 ant로 매우 쉽게 할 수 있는데, RSL을 사용하면 조금 복잡해집니다.
RSL로 사용할 Flex Library Project를 하나 만듭니다. 그리고 클래스나 MXML을 추가하게 되면 bin디렉토리에 *.swc파일이 생깁니다. 이걸이용해서 메인프로젝트에서 컴파일을 해야합니다. 또한 *.swc파일을 이용해서 optimizer된 *.swf를 만들어야합니다.
<target name="optimizer">
<unzip src="${SWC파일}" dest="${SWC파일을 풀어놓을 디렉토리}" />
<exec executable="${optimizer.exe파일 경로}">
<arg line="-input '${SWC파일 풀어놓은 디렉토리}/library.swf'" />
<arg line="-output '{아웃풋할 파일명.swf}'" />
</exec>
</target>몰랐는데, SWC파일 풀면 library.swf가 나오는데, 그걸 optimizer.exe한 것이 Flex Builder에서 나오는 swf파일이랑 같은것이더라구요(알고보니 나만 몰랐던거....다 알고있었음!-_-)
이렇게 하면 swf파일이 만들어집니다.
그럼 메인프로젝트 컴파일 하려면 이런식으로 하면 됩니다.
<target name="compile">
<exec executable="${mxmlc.exe파일 경로}">
<arg line="-verify-digests=false" />
<arg line="-runtime-shared-library-path '${rsl swc파일경로}' '${rsl경로위치url}'" />
<arg line="-o '${아웃풋 경로}'" />
<arg line="'${소스mxml메인파일}'" />
</exec>
</target>compile하기전에 optimizer target을 depends해야함^^
아마 verify-digests는 properties에서 설정할 때 체크하는 그것일꺼에요. 음..저는 이런식으로 하니까 되더라구요-_- -runtime-shared-library-path에서 swc파일 경로랑 rsl경로위치url(나중에 파일을 올릴 때 해당 위치에 있어야할 url입니다)로 지정하니 되더군요. 이것때문에 고생을 좀 해서-_-
메인프로젝트에 SWC파일을 LIB로 사용한다면 이런식으로 해야하구요^^
<arg line="-library-path+='${basedir}/libs/Mate_08_8_1.swc'" />ftp올리는 것도 지돌스타님 블로그에 잘 정리 되어있음!
http://blog.jidolstar.com/506
이러면 원클릭 배포가 가능해짐-_- 귀차니즘을 위한 ANT임!-_-
4 Comments
-
-
머드초보
아...별거 없는데 ㅠㅠ 감사합니다 ^^
사실 command line컴파일을 그냥 ant로 쓴거라-_-
방문해주셔서 항상 감사해요~ ^^
-
-
-
ANT라는 훌륭한 배포툴이 있었을 줄이야-_-;
그냥 Spring Framework 쎕바쎕~ 예제를 따라하다가 여기서 ant로 컴파일하고 배포하고 막 그르거든요^^
http://www.springframework.org/docs/Spring-MVC-step-by-step/index.html
이게 Spring MVC 스텝바이스텝 예제인데요. 여기서 ANT로 컴파일하고 해당 톰캣에 배포까지는 하는데요.
로컬에 있는 TOMCAT에서만 하고 실제 원격지에다가 deploy하는 법은 또 따로 있더라구요.
http://tomcat.apache.org/download-60.cgi
톰캣 다운로드 홈페이지를 가면, Core 랑 Deployer 2개가 있어요(Tomcat을 한 100번은 받아본 것 같은데 Deployer는 처음봐요-_-;)
Deployer를 받아야해요.
그런다음에 적당한 곳에 압축을 풀어봅시다.
저는 D:/apache-tomcat-6.0.16-deployer/ 이 경로에다가 풀었어요.
build.xml파일을 열어봅시다.
<property name="deployer.lib" value="D:/apache-tomcat-6.0.16-deployer/lib" />
<path id="deployer.classpath">
<fileset dir="${deployer.lib}">
<include name="*.jar"/>
</fileset>
</path>
<!-- Configure the custom Ant tasks for the Manager application -->
<taskdef resource="org/apache/catalina/ant/catalina.tasks"
classpathref="deployer.classpath"/>
요렇게 추가를 해봅시다. deployer에 있는 lib를 경로로 추가하는 것이 포인트입니다 ^^
그러면 <deploy>태그를 사용할 수 있더군요.
저것을 추가하지 않으면 이렇게 뜹니다.
D:\workspace\workspace_java\springapp\build.xml:76: Problem: failed to create task or type deploy
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.
그럼 <deploy>태그를 이용해서 원격지 서버에 배포할 수 있습니다.
<target name="server_deploy" depends="deploywar" description="server deploy">
<deploy url="${tomcat.manager.url}"
username="${tomcat.manager.username}"
password="${tomcat.manager.password}"
path="/${name}"
war="file:${name}.war"
update="true">
</deploy>
</target>
자세히 보면 depends는 deploywar인데 이 target은 war로 만들어주는 target입니다. 저것을 먼저 실행한 후 war파일을 생성한 뒤 그 war파일을 해당 서버에 deploy하는 것이죠.
tomcat.manager.url은 http://서버아이피:8080/manager
tomcat.manager.username는 매니저id
tomcat.manager.password는 매니저password
tomcat에 매니저아이디를 추가하는 것은 (6.0기준)
{tomcat홈}/conf/tomcat-users.xml 파일을 수정해야합니다.
<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<user username="manager" password="manager1" roles="manager"/>
</tomcat-users>
저렇게 추가를 하면 돼요.
-
AZAMARA
오 마침 spring MVC 공부하고있었는데 Ant 자동 배포까지 배울 수 있어서 좋네요 감사합니다 + ㅅ+

