<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>kjunine is online</title>
		<link>http://kjunine.net/</link>
		<description>내 멋대로 해라!</description>
		<language>ko</language>
		<pubDate>Wed, 03 Mar 2010 00:27:23 +0900</pubDate>
		<generator>Tistory 1.1 (http://www.tistory.com/)</generator>
		<image>
		<title>kjunine is online</title>
		<url><![CDATA[http://cfs5.tistory.com/upload_control/download.blog?fhandle=YmxvZzE2NDA0NkBmczUudGlzdG9yeS5jb206L2F0dGFjaC8wLzE0MDAwMDAwMDAwMC5qcGc%3D]]></url>
		<link>http://kjunine.net/</link>
		<description>내 멋대로 해라!</description>
		</image>
		<item>
			<title>맥북 개봉기</title>
			<link>http://kjunine.net/entry/opening-macbook</link>
			<description>&lt;p&gt;맥북이 생겼습니다. 제가 산 건 아니지만 &lt;b&gt;새 맥북&lt;/b&gt;을 당분간 제가 쓰게 되었습니다. 제 것이 아니라는 게 아쉽지만 기념으로 사진을 좀 찍어뒀습니다. ^-^&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/137E4E244B8D26F6369A0E&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/137E4E244B8D26F6369A0E&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0373.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/167E4E244B8D26F837AAD3&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/167E4E244B8D26F837AAD3&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0374.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile26.uf.tistory.com/original/201D06274B8D271762A59B&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile26.uf.tistory.com/image/201D06274B8D271762A59B&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0378.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile29.uf.tistory.com/original/192490274B8D27A677A168&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile29.uf.tistory.com/image/192490274B8D27A677A168&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0379.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/141D06274B8D271964CE17&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/141D06274B8D271964CE17&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0380.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile22.uf.tistory.com/original/131D06274B8D271A65C369&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/131D06274B8D271A65C369&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0381.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile25.uf.tistory.com/original/202C2E274B8D27F2509FCC&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/202C2E274B8D27F2509FCC&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0382.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile22.uf.tistory.com/original/132C2E274B8D27F4515CB7&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/132C2E274B8D27F4515CB7&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0377.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile1.uf.tistory.com/original/162C2E274B8D27F652D244&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile1.uf.tistory.com/image/162C2E274B8D27F652D244&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0376.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile6.uf.tistory.com/original/166625284B8D282C6EA358&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile6.uf.tistory.com/image/166625284B8D282C6EA358&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0384.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/196625284B8D282E6FD8ED&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile21.uf.tistory.com/image/196625284B8D282E6FD8ED&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0385.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/196625284B8D283170D81E&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/196625284B8D283170D81E&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0387.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/126625284B8D2833719AEB&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/126625284B8D2833719AEB&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0400.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile25.uf.tistory.com/original/166625284B8D2836726963&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/166625284B8D2836726963&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0404.jpg&quot; height=&quot;465&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;사진이 생각보다 어둡군요. ㅎ 마우스는 &lt;b&gt;비싼 매직 마우스&lt;/b&gt;입니다. 처음에는 너무 불편했는데 익숙해지니까 이제 돈 값을 하는 것 같네요. 그래도 여전히 &lt;i&gt;두 손가락으로 앞으로 가기&lt;/i&gt; 하는 것이 생각보다 힘들어요.&lt;/p&gt;
&lt;p&gt;별첨으로 아이폰 박스 사진도 올립니다. (아이폰 사진도 올리고 싶지만 아이폰으로 아이폰을 못 찍자나요. ㅠ_ㅠ) 아이폰은 제꺼에요. 너무 잘 쓰고 있죠. ^^/&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/1920CC274B8D26DD4C9ABF&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/1920CC274B8D26DD4C9ABF&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;IMG_0021.jpg&quot; height=&quot;826&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-51-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>기타</category>
			<category>iphone</category>
			<category>macbook</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/51</guid>
			<comments>http://kjunine.net/entry/opening-macbook#entry51comment</comments>
			<pubDate>Wed, 03 Mar 2010 00:01:58 +0900</pubDate>
		</item>
		<item>
			<title>PubSubHubbub 테스트</title>
			<link>http://kjunine.net/entry/pubsubhubbub-test</link>
			<description>&lt;p&gt;&lt;a href=&quot;http://kr.geek2live.org/303&quot; target=&quot;_blank&quot; title=&quot;[http://kr.geek2live.org/303]로 이동합니다.&quot;&gt;구글리더에서 pubsubhubbub을 전면 지원한다&lt;/a&gt;고 합니다. FeedBurner와 같은 구글 서비스를 사용하면 바로 써볼 수 있다고 하네요.&lt;/p&gt;
&lt;p&gt;그래서 FeedBurner에서 Pingshot 서비스를 활성화시키고 구글 리더에서 바로 읽어오는지 테스트합니다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile29.uf.tistory.com/original/156210014B831D122AF07D&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile29.uf.tistory.com/image/156210014B831D122AF07D&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;pingshot.png&quot; height=&quot;519&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;내 블로그의 글을 피드버너에서 가져가는 시간이 걸리므로.. (이 시간을 줄이는 방법은 없을까요?) 아직은 피드에 이 글이 반영이 안 되어 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/157B90024B83205F809B4A&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/157B90024B83205F809B4A&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;feeds.png&quot; height=&quot;591&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;5분 정도 기다리니 피드에 반영이 됩니다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/1366E5034B8320B866F3B6&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/1366E5034B8320B866F3B6&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;feeds-again.png&quot; height=&quot;606&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;구글 리더에서도 바로 보이네요.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile7.uf.tistory.com/original/18612F014B832119654E29&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile7.uf.tistory.com/image/18612F014B832119654E29&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;google-reader.png&quot; height=&quot;278&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;바로 보이기는 하였지만.. 아쉽게도.. 우연히 좋은 타이밍에 구글 리더에서 읽어갔기 때문이네요. &lt;a href=&quot;http://code.google.com/p/pubsubhubbub/wiki/HubbubAtGoogle&quot; target=&quot;_blank&quot; title=&quot;[http://code.google.com/p/pubsubhubbub/wiki/HubbubAtGoogle]로 이동합니다.&quot;&gt;이곳&lt;/a&gt;에서 Google Reader (Role: sub) 부분이 done 이 되어야 동작할 것 같네요.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile7.uf.tistory.com/original/184C48034B8385A954AACA&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile7.uf.tistory.com/image/184C48034B8385A954AACA&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;pubsubhubbub.png&quot; height=&quot;412&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;설정은 다 해뒀으니 구글이 빨리 작업을 해주기만을 기다릴 뿐 ^^;&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-50-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>기타</category>
			<category>FeedBurner</category>
			<category>google reader</category>
			<category>pingshot</category>
			<category>pubsubhubbub</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/50</guid>
			<comments>http://kjunine.net/entry/pubsubhubbub-test#entry50comment</comments>
			<pubDate>Tue, 23 Feb 2010 09:11:09 +0900</pubDate>
		</item>
		<item>
			<title>애플의 공습</title>
			<link>http://kjunine.net/entry/apple-iphone-who</link>
			<description>&lt;p&gt;MBC의 후+에서 방송된 &quot;&lt;b&gt;애플의 공습&lt;/b&gt;&quot;이라는 방송 내용입니다. 아이폰 출시에 따른 변화에 대해서 다루고 있습니다.&lt;/p&gt;
&lt;p&gt;저작권법에 무지해 그냥 유투브 링크만 겁니다. ㅎ_ㅎ&amp;nbsp;5개의 영상로 나뉘어져있지만 Playlist이기 때문에 &lt;i&gt;Play All Videos&lt;/i&gt; 버튼을 눌러서 보시면 자동으로 다음 영상으로 넘어갑니다. 편하게 보실 수 있어요.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.youtube.com/view_play_list?p=7AC62B029E6A202F&quot; target=&quot;_blank&quot;&gt;http://www.youtube.com/view_play_list?p=7AC62B029E6A202F&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;방송을 보고 나니 많은 생각들이 나네요. 내가 할 수 있는 것부터 찾아서 해봐야 할 것 같습니다.&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-49-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>기타</category>
			<category>Apple</category>
			<category>iphone</category>
			<category>아이폰</category>
			<category>애플</category>
			<category>애플의 공습</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/49</guid>
			<comments>http://kjunine.net/entry/apple-iphone-who#entry49comment</comments>
			<pubDate>Mon, 22 Feb 2010 14:43:50 +0900</pubDate>
		</item>
		<item>
			<title>나의 2010년 목표</title>
			<link>http://kjunine.net/entry/my-2010-goals</link>
			<description>&lt;div&gt;
나의 2010년 목표&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; &quot;&gt;
&lt;li&gt;영어&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;OPIc: IM&lt;/li&gt;
&lt;li&gt;TOEIC: 950↑&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Project&lt;/li&gt;
&lt;ol style=&quot;&quot;&gt;
&lt;li&gt;kjunine&#039;s gallery&lt;/li&gt;
&lt;li&gt;mobile apps: 5↑&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;몸무게:&amp;nbsp;80 kg (&lt;span class=&quot;Apple-style-span&quot; style=&quot;color: rgb(0, 0, 0); font-family: 새굴림, 굴림; line-height: 20px; font-size: 13px; &quot;&gt;±&lt;/span&gt;2kg)&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;표준근육질 체형&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;여행&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;책 읽는 여행&lt;/li&gt;
&lt;li&gt;해외 여행&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Online&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;블로그: 1 post/week&lt;/li&gt;
&lt;li&gt;SNS&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
목표 수행 방법&lt;/div&gt;
&lt;div&gt;
&lt;ol style=&quot;list-style-type: decimal; &quot;&gt;
&lt;li&gt;영어&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;shadow speaking,&amp;nbsp;English diary&lt;/li&gt;
&lt;li&gt;TOEIC vocabulary, TOEIC listening/writing books&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Project&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;?&lt;/li&gt;
&lt;li&gt;?&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;몸무게&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;운동: running / pushups / squats / situps / soccer&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;여행&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;어디로 갈까? 무슨 책을 읽을까?&lt;/li&gt;
&lt;li&gt;가까운 동남아, 일본? 아니면 작정하고 유럽?&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Online&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;스케쥴에 시간 안배&lt;/li&gt;
&lt;li&gt;생각을 표현하자&lt;/li&gt;
&lt;/ol&gt;
&lt;ol&gt;
&lt;/ol&gt;
&lt;/ol&gt;
&lt;/div&gt;
</description>
			<category>기타</category>
			<category>나의 2010년 목표</category>
			<category>무조건 열심히</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/48</guid>
			<comments>http://kjunine.net/entry/my-2010-goals#entry48comment</comments>
			<pubDate>Tue, 16 Feb 2010 09:48:59 +0900</pubDate>
		</item>
		<item>
			<title>메이븐(Maven) 시작하기 (3/3)</title>
			<link>http://kjunine.net/entry/getting-started-with-maven-3</link>
			<description>&lt;p&gt;&lt;b&gt;이클립스에서 메이븐 프로젝트를 해보자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;개발을 하는데 이클립스와 같은 IDE를 사용할 수 없다면 생산성이 급격히 낮아질 것이다. 메이븐 프로젝트 역시 마찬가지다. 메이븐이 편리한 도구라서 쓰고 싶은데 IDE를 지원하지 않는다면 무용지물일 것이다. 하지만 메이븐은 좋은 도구답게 이클립스를 비롯한 다양한 IDE를 지원한다. 여기에서도 플러그인이 사용되는데, 조금 재밌는 것은 메이븐에도 이클립스 플러그인이 있고, 이클립스에도 메이븐 플러그인이 있다는 것이다. 두 가지의 차이는 프로젝트를 어디에서 시작을 하는 것이냐는 것이다. &lt;b&gt;메이븐 이클립스 플러그인&lt;/b&gt;은 메이븐에서 먼저 시작하고, &lt;b&gt;이클립스 메이븐 플러그인&lt;/b&gt;은 이클립스에서 먼저 시작한다. 두 가지 모두 사용 가능하지만 결국에는 이클립스의 메이븐 플러그인을 많이 사용하게 될 것이다. 명령어를 치는 것보다 IDE에서 클릭 몇번으로 프로젝트를 생성하고 관리하는 것이 편리하니까..&lt;/p&gt;
&lt;p&gt;먼저 메이븐 이클립스 플러그인을 사용하여 보자.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. 프로젝트를 생성한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;지금은 이전에 만들어 놓았던 프로젝트를 그냥 쓰기로 하자. ^-^&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. mvn eclipse:eclipse&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;프로젝트 폴더에서 eclipse 플러그인의 eclipse 골을 실행하는 명령어를 실행한다.&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;&amp;nbsp;mvn eclipse:eclipse&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&#039;BUILD SUCCESSFUL&#039; 이 보이면서 완료되면 다음과 같은 이클립스 프로젝트 관련 파일들이 생긴다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/172BBA284ADC4A5A3AE664&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/172BBA284ADC4A5A3AE664&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-01.png&quot; height=&quot;122&quot; width=&quot;139&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: square; &quot;&gt;
&lt;li&gt;.project: 프로젝트 설정 파일&lt;/li&gt;
&lt;li&gt;.classpath: 클래스패스 설정 파일&lt;/li&gt;
&lt;li&gt;.settings: 기타 설정 파일들을 포함하는 폴더&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;3. Import Project&lt;/p&gt;
&lt;p&gt;이클립스에서 Import Project.. 를 통해 프로젝트를 워크스페이스(Workspace) 내부로 가져온다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/120D50284ADC4D05A2BDE8&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/120D50284ADC4D05A2BDE8&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-02.png&quot; height=&quot;474&quot; width=&quot;336&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/140D50284ADC4D06A35C37&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/140D50284ADC4D06A35C37&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-03.png&quot; height=&quot;551&quot; width=&quot;525&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/150D50284ADC4D06A4A759&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile21.uf.tistory.com/image/150D50284ADC4D06A4A759&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-04.png&quot; height=&quot;550&quot; width=&quot;525&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/170D50284ADC4D07A556B3&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/170D50284ADC4D07A556B3&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-05.png&quot; height=&quot;349&quot; width=&quot;308&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&#039;Existing Projects into Workspace&#039;를 선택하고 메이븐 프로젝트가 있는 경로를 선택해주면 된다.&lt;/p&gt;
&lt;p&gt;메이븐으로 이미 만든 프로젝트는 위와 같이 메이븐의 이클립스 플러그인으로 간편하게 이클립스 프로젝트로 만들면 된다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;이클립스에서 전부 다 하자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이제는 처음부터 이클립스에서 메이븐 프로젝트를 만드는 방법을 알아보자. 그러기 위해서는 이클립스의 메이븐 플러그인을 이클립스에 설치해야 한다. 메이븐 플러그인으로는 &lt;b&gt;&lt;a href=&quot;http://m2eclipse.sonatype.org/&quot; target=&quot;_blank&quot; title=&quot;[http://m2eclipse.sonatype.org/]로 이동합니다.&quot;&gt;M2Eclipse&lt;/a&gt;&lt;/b&gt; 나 &lt;b&gt;&lt;a href=&quot;http://code.google.com/p/q4e/&quot; target=&quot;_blank&quot; title=&quot;[http://code.google.com/p/q4e/]로 이동합니다.&quot;&gt;Q4E&lt;/a&gt;&lt;/b&gt; 등이 있다. 둘 중에 아무거나 사용하면 될 것 같다. 나는 이전에 m2eclipse를 설치했는데 요즘엔 q4e가 더 좋다는 것 같기도.. @_@&lt;/p&gt;
&lt;p&gt;이클립스의 Software Update에서 다음 사이트(Site)를 추가하고 설치하면 된다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: square; &quot;&gt;
&lt;li&gt;m2eclipse&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://m2eclipse.sonatype.org/update/&quot;&gt;http://m2eclipse.sonatype.org/update/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;q4e&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://q4e.googlecode.com/svn/trunk/updatesite-iam/&quot;&gt;http://q4e.googlecode.com/svn/trunk/updatesite-iam/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;메이븐 플러그인을 설치한 후에 다음을 진행하도록 하자.
&lt;/p&gt;
&lt;p&gt;&lt;b&gt;1. 프로젝트를 생성한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이클립스에서 다음과 같이 프로젝트를 생성한다. 옵션은 필요에 따라 바꾸면 될 것이다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile3.uf.tistory.com/original/123D1E254ADC51A97F7450&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile3.uf.tistory.com/image/123D1E254ADC51A97F7450&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-06.png&quot; height=&quot;500&quot; width=&quot;525&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile5.uf.tistory.com/original/113D1E254ADC51A9804C68&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile5.uf.tistory.com/image/113D1E254ADC51A9804C68&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-07.png&quot; height=&quot;515&quot; width=&quot;525&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile22.uf.tistory.com/original/203D1E254ADC51AA81D594&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/203D1E254ADC51AA81D594&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-08.png&quot; height=&quot;445&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile9.uf.tistory.com/original/123D1E254ADC51AB825665&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile9.uf.tistory.com/image/123D1E254ADC51AB825665&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-09.png&quot; height=&quot;445&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;다음과 같이 프로젝트가 생성된다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile9.uf.tistory.com/original/19713C1B4ADC52CF58F0E3&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile9.uf.tistory.com/image/19713C1B4ADC52CF58F0E3&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-10.png&quot; height=&quot;441&quot; width=&quot;328&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;자동으로 App.java 파일과 AppTest.java 파일이 생성되었고, JUnit 3.8.1과의 의존성에 따라 프로젝트 클래스패스도 만들어졌다.&lt;/p&gt;
&lt;p&gt;자동으로 만들어진 App.java, AppTest.java 파일들은 가뿐하게 지워주자.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 자바 버전을 5로 올리자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;자바 1.4보다는 자바 5 이상의 버전이 좋다. 메이븐 프로젝트를 처음 생성하면 기본적으로 자바 1.4에 맞춰져 있기 때문에 바꿔주어야 한다.
&lt;/p&gt;
&lt;p&gt;이전에 했던 대로 POM 파일에서 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;maven-compiler-plugin 설정을 추가&lt;/span&gt;해주면 된다. 직접 파일을 수정할 수도 있겠지만 이클립스의 도움을 받아보자.&lt;/p&gt;
&lt;p&gt;이클립스에서 pom.xml 파일을 열면 자동으로 &lt;b&gt;Maven POM editor&lt;/b&gt;로 열린다. 에디터 하단에서 &lt;b&gt;plugin 탭&lt;/b&gt;을 선택하자.&amp;nbsp;Plugins 부분에서 &lt;b&gt;Add.. 버튼&lt;/b&gt;을 클릭하고, Plugin Details 부분에서 다음 그림과 같이 내용을 채워준다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile4.uf.tistory.com/original/1468D41C4ADC569962E847&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile4.uf.tistory.com/image/1468D41C4ADC569962E847&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-11.png&quot; height=&quot;295&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;그리고 Executions 위에 있는 &lt;b&gt;Configuration 링크&lt;/b&gt;를 클릭하여 다음 그림과 같이 나머지 설정을 넣어준다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile9.uf.tistory.com/original/187F941D4ADC577F3FD99C&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile9.uf.tistory.com/image/187F941D4ADC577F3FD99C&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-12.png&quot; height=&quot;295&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;플러그인을 설정하는 것은 각 플러그인마다 설정하는 항목이 다르므로 결국 수동으로 작성해야 하는 불편함이 있는 것 같다.&lt;/p&gt;
&lt;p&gt;이번엔 &lt;b&gt;Dependencies 탭&lt;/b&gt;으로 가보자. JUnit 3.8.1이 라이브러리로 등록되어 있는데 자바 5로 올렸으니 거기에 맞게 JUnit도 4.5로 올려주자.&lt;/p&gt;
&lt;p&gt;Dependencies 부분에서 junit을 선택하고 Dependency Details 부분에서 버전을 4.5로 바꿔준다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile4.uf.tistory.com/original/11171B2C4ADC58A0A7FD4C&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile4.uf.tistory.com/image/11171B2C4ADC58A0A7FD4C&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-13.png&quot; height=&quot;295&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. 다른 라이브러리를 더 추가하자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;여기서는 역시 Commons Lang 라이브러리를 사용해보자. POM 에디터의 dependencies 탭에서 직접 추가할 수도 있겠지만.. 조금 더 편하게 라이브러리를 검색해서 추가하는 방법도 있다.&lt;/p&gt;
&lt;p&gt;프로젝트에서 마우스 오른쪽 클릭 후 나오는 메뉴에서 Maven &amp;gt; Add Dependency 를 선택한다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/113F5F164ADC5A1938268D&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/113F5F164ADC5A1938268D&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-14.png&quot; height=&quot;550&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;다음처럼 나오는 창에서 라이브러리를 검색하고, 원하는 라이브러리가 보이면 선택한다. 원하는 버전을 골라서 선택할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile22.uf.tistory.com/original/147E36114ADC5BB5DD7FF4&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/147E36114ADC5BB5DD7FF4&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-15.png&quot; height=&quot;450&quot; width=&quot;480&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;다음과 같이 commons-lang 라이브러리가 추가된 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/183C68134ADC5C7495BF4B&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/183C68134ADC5C7495BF4B&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-16.png&quot; height=&quot;295&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;필요한 라이브러리를 모두 추가했으면 개발을 시작하자.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. 소스와 테스트 파일을 추가한다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center; &quot;&gt;&lt;b&gt;Sample.java&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;package net.kjunine.maven.eclipse;

import org.apache.commons.lang.StringUtils;

public class Sample {

	public static String reverse(String s) {
		return StringUtils.reverse(s);
	}

	public static void main(String[] args) {
		for (int i = 0; i &amp;lt; args.length; i++) {
			System.out.println(reverse(args[i]));
		}
	}

}
&lt;/pre&gt;
&lt;p style=&quot;text-align: center; &quot;&gt;&lt;b&gt;SampleTest.java&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;package net.kjunine.maven.eclipse;

import static org.junit.Assert.*;

import org.junit.Test;

public class SampleTest {

	@Test
	public void testReverse() {
		String actual = Sample.reverse(&quot;hello&quot;);
		String expected = &quot;olleh&quot;;
		assertEquals(expected, actual);
	}

}
&lt;/pre&gt;
&lt;p&gt;이전 예제에서 사용한 예제 그대로이다. 다른 예제를 만들기가 귀차나서.. ㅠ_ㅠ&lt;/p&gt;
&lt;p&gt;에러가 생기면 POM 에디터에서 수정한 사항이 프로젝트에 반영이 제대로 안 된 것이니 프로젝트에서 마우스 오른쪽 클릭 후 &amp;nbsp;나오는 메뉴에서 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;Maven &amp;gt; Update Dependencies&lt;/span&gt; 와 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;Update Project Configuration&lt;/span&gt; 을 실행하여 반영시키자.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile21.uf.tistory.com/original/127681204ADDC2FE4DE04F&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile21.uf.tistory.com/image/127681204ADDC2FE4DE04F&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-18.png&quot; height=&quot;540&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile5.uf.tistory.com/original/207681204ADDC2FD4C7A47&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile5.uf.tistory.com/image/207681204ADDC2FD4C7A47&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-17.png&quot; height=&quot;537&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5. 프로젝트를 테스트하고 빌드한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;프로젝트에서 마우스 오른쪽 클릭 후 나오는 메뉴에서 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;Run As &amp;gt; Maven 으로 시작하는 많은 메뉴 아이템들&lt;/span&gt;을 볼 수 있다. 콘솔에서 직접 입력해서 실행하던 메이븐 명령어를 방금 언급한 메뉴를 선택하는 것으로 쉽게 실행할 수 있다.&lt;/p&gt;
&lt;p&gt;빌드, 테스트 후 그리고 로컬 리포지토리에 설치하려면 아래 메뉴들 중에서 &#039;Maven install&#039; 메뉴를 선택한다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile23.uf.tistory.com/original/137FC1294ADF10262018DB&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile23.uf.tistory.com/image/137FC1294ADF10262018DB&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-19.png&quot; height=&quot;620&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;
&lt;/p&gt;
&lt;p&gt;콘솔 창에 &#039;BUILD SUCCESSFUL&#039; 이라고 메시지가 뜨면 성공한 것이다.&lt;/p&gt;
&lt;p&gt;&#039;Maven build...&#039; 메뉴를 선택하면 다음과 같은 팝업창이 떠서 다른 플러그인의 골을 실행할 수 있다. 다음과 같이 exec:java 골을 실행하여 위에서 만든 프로그램을 실행하여 보자.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile22.uf.tistory.com/original/1204BD214ADF12FE81631A&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/1204BD214ADF12FE81631A&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-3-20.png&quot; height=&quot;496&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;콘솔 창에 &#039;BUILD SUCCESSFUL&#039; 이라는 메시지와 함께 결과가 제대로 나오는 것을 볼 수 있을 것이다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;자바 프로젝트는 항상 메이븐과 함께 하자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이제 메이븐의 기초를 배웠으니 자바 프로젝트를 만들 때는 항상 메이븐으로 시작하자. 이클립스 플러그인의 도움을 받으면 몇번의 클릭으로 거의 모든 것을 할 수 있으니 어려워하지 않아도 될 것 같다.&lt;/p&gt;
&lt;p&gt;이것으로 첫 시리즈인 메이븐 시작하기 시리즈를 마친다. 자세하게 쓸려고 노력했지만 의미가 충분히 전달되지 않은 것도 많은 것 같다. 잘 이해가 안 가거나 잘 못된 부분은 댓글로 남겨주길 바라고, 더 자세히 알고싶으면&lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/]로 이동합니다.&quot;&gt; 메이븐 홈페이지&lt;/a&gt;나 &lt;a href=&quot;http://www.sonatype.com/products/maven/documentation/book-defguide&quot; target=&quot;_blank&quot; title=&quot;[http://www.sonatype.com/products/maven/documentation/book-defguide]로 이동합니다.&quot;&gt;메이븐 책&lt;/a&gt;을 참고하길 바란다.&lt;/p&gt;
&lt;p&gt;앞으로는 더 높은 수준의 포스트를&amp;nbsp;기대하며..&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-47-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>자동화</category>
			<category>Eclipse</category>
			<category>eclipse maven plugin</category>
			<category>Maven</category>
			<category>maven eclipse plugin</category>
			<category>maven plugin</category>
			<category>plugin</category>
			<category>메이븐</category>
			<category>메이븐 플러그인</category>
			<category>이클립스</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/47</guid>
			<comments>http://kjunine.net/entry/getting-started-with-maven-3#entry47comment</comments>
			<pubDate>Wed, 21 Oct 2009 23:04:14 +0900</pubDate>
		</item>
		<item>
			<title>메이븐(Maven) 시작하기 (2/3)</title>
			<link>http://kjunine.net/entry/getting-started-with-maven-2</link>
			<description>&lt;p&gt;&lt;a href=&quot;http://kjunine.net/entry/getting-started-with-maven&quot; target=&quot;_blank&quot; title=&quot;[http:///entry/getting-started-with-maven]로 이동합니다.&quot;&gt;지난 번 포스트&lt;/a&gt;에서 메이븐으로 자바 프로젝트의 라이브러리를 관리하는 법을 살펴보았다. 이번 포스트에서 살짝 더 나아가서 메이븐의 꽃이라고 할 수 있는 플러그인에 대해서 알아보자.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;메이븐 플러그인은 메이븐의 핵심이다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;일단 개념부터 짚고 넘어가자. 알아야하는 개념은 플러그인(Plugin)과 골(Goal)이다.&lt;/p&gt;
&lt;p&gt;플러그인은 메이븐의 핵심 구성 요소이다. 다시 말하면 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;메이븐은 플러그인들의 집합&lt;/span&gt;이라고 할 수 있다.&amp;nbsp;참고로&amp;nbsp;&lt;a href=&quot;http://maven.apache.org/plugins/index.html&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/plugins/index.html]로 이동합니다.&quot;&gt;메이븐 홈페이지의 플러그인 페이지&lt;/a&gt;에서 사용 가능한 플러그인들의 목록을 볼 수 있다.&amp;nbsp;그리고 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;플러그인은 관련있는 골들의 집합&lt;/span&gt;이다. 골은 메이븐에서 작업의 단위이라고 할 수 있다. 앤트(Ant)를 안다면 앤트의 태스크(task)와 유사한 것으로 생각해도 될 것이다. 메이븐 생명주기의 관점에서 보면&amp;nbsp;&lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;빌드 단계(Build Phase)에는 그 단계가 실행하는 골이 정해져있다.&lt;/span&gt;&amp;nbsp;예를 들면, compile 빌드 단계는 compiler 플러그인의 compile 골을 실행하고, package 빌드 단계는 jar 플러그인의 jar 골을 실행한다.&lt;/p&gt;
&lt;p&gt;정리하면 메이븐에는 무수한 플러그인들이 있고, 각 플러그인들은 관련된 골들을 묶어 놓은 것이다. 그리고 각 골들은 메이븐 빌드 단계에서 수행되는 하나의 작업인 것이다. 더 자세한 설명은 역시 &lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/]로 이동합니다.&quot;&gt;메이븐 홈페이지&lt;/a&gt;나 &lt;a href=&quot;http://www.sonatype.com/products/maven/documentation/book-defguide&quot; target=&quot;_blank&quot; title=&quot;[http://www.sonatype.com/products/maven/documentation/book-defguide]로 이동합니다.&quot;&gt;메이븐 책(Maven: The Definitive Guide)&lt;/a&gt;를 참고하자.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;메이븐 플러그인을 사용해 보자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;사실 &lt;a href=&quot;http://kjunine.net/entry/getting-started-with-maven&quot; target=&quot;_blank&quot; title=&quot;[http://kjunine.net/entry/getting-started-with-maven]로 이동합니다.&quot;&gt;지난 번 포스트&lt;/a&gt;에서 이미 메이븐 플러그인을 사용해 보았다.&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;mvn &lt;b&gt;archetype:generate&lt;/b&gt; -DgroupId=net.kjunine -DartifactId=sample -Dpackage=net.kjunine.sample -Dversion=1.0-SNAPSHOP&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;위 명령어를 기억하는가? 위 명령어에서 &#039;archetype:generate&#039;는 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;archetype 플러그인의 generate 골을 실행&lt;/span&gt;하라는 메이븐 명령어이다. 참고로 archetype 플러그인은 자바 프로젝트를 생성하는 것과 관련있는 골들의 모음이다. 이 플러그인에 대해 자세한 설명은 &lt;a href=&quot;http://maven.apache.org/plugins/maven-archetype-plugin/&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/plugins/maven-archetype-plugin/]로 이동합니다.&quot;&gt;여기&lt;/a&gt;를 참고하자. 여기서 보여주고 싶은 것은 플러그인의 골을 실행하는 방법이다. mvn 명령어에 플러그인:골 형식의 옵션과 -D를 붙인 key=value 형식의 파라메터들을 덧붙여서 실행하면 된다.&lt;/p&gt;
&lt;p&gt;그리고&amp;nbsp;&lt;a href=&quot;http://kjunine.net/entry/getting-started-with-maven&quot; target=&quot;_blank&quot; title=&quot;[http://kjunine.net/entry/getting-started-with-maven]로 이동합니다.&quot;&gt;지난 번 포스트&lt;/a&gt;에서 완성된 프로젝트를 실행하는 방법이 좀 까다로웠던 것을 기억하는가?&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;java -cp target/sample-1.0-SNAPSHOT.jar;&quot;%HOME%/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar&quot; net.kjunine.sample.Sample hello kjunine&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;위와 같이 클래스패스를 복잡하게 설정하면서 실행했었는데 이것을 &lt;b&gt;exec 플러그인&lt;/b&gt;을 사용하면 간단하게 실행시킬 수 있다. exec 플러그인의 상세한 설명은 &lt;a href=&quot;http://mojo.codehaus.org/exec-maven-plugin/&quot; target=&quot;_blank&quot; title=&quot;[http://mojo.codehaus.org/exec-maven-plugin/]로 이동합니다.&quot;&gt;여기&lt;/a&gt;를 참조하자.&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;mvn &lt;b&gt;exec:java&lt;/b&gt; -Dexec.mainClass=net.kjunine.sample.Sample -Dexec.args=&quot;hello kjunine&quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
exec 플러그인이 POM 파일을 참조해 라이브러리와 프로젝트의 의존 관계를 파악해서 알아서 클래스패스를 설정해주므로 명령어가 매우 간단해졌다. 결과는 다음과 같이 나온다.&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;[INFO] Scanning for projects...&lt;br /&gt;
[INFO] Searching repository for plugin with prefix: &#039;exec&#039;.&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Building sample&lt;br /&gt;
[INFO] &amp;nbsp; &amp;nbsp;task-segment: [exec:java]&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Preparing exec:java&lt;br /&gt;
[INFO] No goals needed for project - skipping&lt;br /&gt;
[INFO] [exec:java]&lt;br /&gt;
&lt;b&gt;olleh&lt;br /&gt;
eninujk&lt;br /&gt;
&lt;/b&gt;[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] BUILD SUCCESSFUL&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] Total time: &amp;lt; 1 second&lt;br /&gt;
[INFO] Finished at: Fri Oct 09 21:51:55 KST 2009&lt;br /&gt;
[INFO] Final Memory: 5M/9M&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;플러그인을 실행하는 방법을 알아봤으니 이번에는 POM 파일에서 플러그인의 설정을 하는 방법을 알아보자.
&lt;/p&gt;
&lt;p&gt;메이븐으로 자바 프로젝트를 빌드할 때 compiler 플러그인의 설정을 바꿔주지 않으면 기본적으로 JDK 1.4 버전을 기준으로 컴파일한다. 그래서 지난 번 포스트에서는 JUnit 라이브러리의 버전이 3.8.2였던 것이다. 이번 기회에 JDK 버전과 JUnit 버전을 각각 1.5와 4.5로 올리고, @Test 어노테이션(Annotation)을 사용해 보자.
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(193, 193, 193); border-right-color: rgb(193, 193, 193); border-bottom-color: rgb(193, 193, 193); border-left-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;&lt;b&gt;1. POM 파일(pom.xml)을 수정하자.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&amp;gt;
  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
  &amp;lt;groupId&amp;gt;net.kjunine&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;sample&amp;lt;/artifactId&amp;gt;
  &amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;
  &amp;lt;version&amp;gt;2.0-SNAPSHOT&amp;lt;/version&amp;gt;
  &amp;lt;name&amp;gt;sample&amp;lt;/name&amp;gt;
  &amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;
  &amp;lt;dependencies&amp;gt;
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;commons-lang&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;commons-lang&amp;lt;/artifactId&amp;gt;
      &amp;lt;version&amp;gt;2.4&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;
      &amp;lt;version&amp;gt;4.5&amp;lt;/version&amp;gt;
      &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
  &amp;lt;/dependencies&amp;gt;
  &amp;lt;build&amp;gt;
    &amp;lt;plugins&amp;gt;
      &amp;lt;plugin&amp;gt;
        &amp;lt;groupId&amp;gt;org.apache.maven.plugins&amp;lt;/groupId&amp;gt;
        &amp;lt;artifactId&amp;gt;maven-compiler-plugin&amp;lt;/artifactId&amp;gt;
        &amp;lt;configuration&amp;gt;
          &amp;lt;source&amp;gt;1.5&amp;lt;/source&amp;gt;
          &amp;lt;target&amp;gt;1.5&amp;lt;/target&amp;gt;
        &amp;lt;/configuration&amp;gt;
      &amp;lt;/plugin&amp;gt;
    &amp;lt;/plugins&amp;gt;
  &amp;lt;/build&amp;gt;
&amp;lt;/project&amp;gt;
&lt;/pre&gt;
&lt;p&gt;주목할 부분은 세 부분이다. 첫째, 프로젝트의 version 을 &#039;2.0-SNAPSHOT&#039;으로 올렸다. 둘째, junit 라이브러리의 버전을 4.5로 올렸다. 셋째, &amp;lt;build /&amp;gt; 부분에 그 안에 compiler 플러그인의 설정을 추가하였다. 여기서 플러그인을 설정하는 방법을 잘 봐두자.&amp;nbsp;다른 플러그인도 마찬가지 방법으로 설정할 수 있다. compiler 플러그인에 대한 상세한 설명은 &lt;a href=&quot;http://maven.apache.org/plugins/maven-compiler-plugin/&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/plugins/maven-compiler-plugin/]로 이동합니다.&quot;&gt;여기&lt;/a&gt;를 참조하자.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. SampleTest 클래스를 수정하자.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;package net.kjunine.sample;

import static org.junit.Assert.*;

import org.junit.Test;

public class SampleTest {

	@Test
	public void testReverse() {
		String actual = Sample.reverse(&quot;hello&quot;);
		String expected = &quot;olleh&quot;;
		assertEquals(expected, actual);
	}

}
&lt;/pre&gt;
&lt;p&gt;JUnit 4.5의 @Test 어노테이션을 사용하도록 수정하였다.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;mvn test&lt;/b&gt; 명령어를 실행하면 빌드와 테스트가 성공하는 것을 볼 수 있다. 그리고&amp;nbsp;&lt;b&gt;mvn install&lt;/b&gt; 명령어를 실행하면 설치가 성공하는 것을 볼 수 있고, 로컬 리포지토리에 이전 버전인 1.0-SNAPSHOT 버전과 최신 버전인 2.0-SNAPSHOT 버전이 모두 설치되어 있는 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile24.uf.tistory.com/original/1529A70E4ACF3A9A575F20&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile24.uf.tistory.com/image/1529A70E4ACF3A9A575F20&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;getting-started-with-maven-2-01.png&quot; height=&quot;186&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;메이븐 플러그인을 맛보다..&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이 포스트에서 메이븐 플러그인을 살펴보았다. 그러나 여기서 살펴본 것은 거의 맛만 본 수준이다. 메이븐에는 무수한 플러그인이 있고, 또 직접 플러그인을 만들 수도 있다. 메이븐을 제대로 알려면 최대한 많은 프러그인들을 사용해보고 또, 직접 플러그인을 만들어 보는 것이 좋을 것이다.&lt;/p&gt;
&lt;p&gt;포스트를 쓰다보니 길어져서 또 나누게 되었다. 다음 포스트에서는 메이븐과 이클립스의 연동을 주제로 &#039;메이븐 시작하기&#039; 시리즈를 마무리하고자 한다. 그럼 다음 포스트에서..&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-43-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>자동화</category>
			<category>Maven</category>
			<category>maven plugin</category>
			<category>메이븐</category>
			<category>메이븐 플러그인</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/43</guid>
			<comments>http://kjunine.net/entry/getting-started-with-maven-2#entry43comment</comments>
			<pubDate>Fri, 09 Oct 2009 22:34:49 +0900</pubDate>
		</item>
		<item>
			<title>메이븐(Maven) 시작하기 (1/3)</title>
			<link>http://kjunine.net/entry/getting-started-with-maven-1</link>
			<description>&lt;p&gt;&lt;b&gt;메이븐으로 자바 프로젝트를 관리해 보자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이전부터 자바 프로젝트를 시작할 때 제일 먼저하는 것은 이클립스를 띄우고, 자바 프로젝트를 만들고 &lt;u&gt;라이브러리들을 lib 폴더에 추가하는 것&lt;/u&gt;이었다. 그런데 비슷비슷한 라이브러리들을 똑같이 사용하는 자바 프로젝트를 여러 개 만들다보면 비슷한 노가다를 계속해야 했다. 그러다가 조금 더 발전한 것이 &lt;u&gt;여러 프로젝트에서 공통으로 사용하는 라이브러리 프로젝트를 만들어서 참조하게 한 것&lt;/u&gt;이다. 조금 편해졌지만 그래도 각 프로젝트마다 클래스패스를 잡아주는 것은 고역이었다.&lt;/p&gt;
&lt;p&gt;그러다 &lt;b&gt;&lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/]로 이동합니다.&quot;&gt;메이븐&lt;/a&gt;&lt;/b&gt;이라는 것을 알게 되었다. 메이븐에서 라이브러리 혹은 프로젝트 의존 관계(Dependency)를 설정하는 것은 매우 간단하다. &lt;u&gt;설정 파일에 그 의존 관계를 선언&lt;/u&gt;하기만 하면 된다. 이클립스와의 연동도 가능하다. 메이븐에서 이클립스 프로젝트를 만들 수도 있고, 이클립스에서 메이븐 플러그인을 설치하여 메이븐 프로젝트를 만들 수도 있다.&lt;/p&gt;
&lt;p&gt;메이븐은 사실 의존 관계 관리 도구라기보다는 &lt;b&gt; 프로젝트 관리 도구&lt;/b&gt;이다. 메이븐은 빌드 생명주기(Build Lifecycle)에 따라 프로젝트 표준을 제공하고 의존 관계를 관리하고 플러그인이 제공하는 부가 기능을 사용할 수 있게 하는 도구이다.  더 자세한 것은 &lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/]로 이동합니다.&quot;&gt;메이븐 홈페이지&lt;/a&gt;나 Sonatype에서 공개한&lt;b&gt; 메이븐 책(&lt;a href=&quot;http://www.sonatype.com/products/maven/documentation/book-defguide&quot; target=&quot;_blank&quot; title=&quot;[http://www.sonatype.com/products/maven/documentation/book-defguide]로 이동합니다.&quot;&gt;Maven: The Definitive Guide&lt;/a&gt;)&lt;/b&gt;를 참조하길 바란다. 메이븐 책은 무료로 다운로드 받을 수 있고, 영어임에도 불구하고 매우 쉽게 쓰여져 읽는 데 큰 어려움은 없다. Thanks, Sonatype. 메이븐 책을 3장까지만 읽어보면 감을 잡을 것이다. 사실 메이븐 책 3장까지 봤으면 이 포스트는 볼 필요도 없다. ㅎ_ㅎ (그래도 이건 한글이다. +_+)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;일단 따라해보자.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;애초에 라이브러리 관리를 더 편하게 하기 위해 메이븐을 사용하려고 했던 것이니 다른 라이브러리를 사용하는 프로젝트를 만들어 보자. 단위 테스트를 위한 &lt;span style=&quot;font-weight: bold;&quot;&gt;JUnit&lt;/span&gt; 라이브러리와 자바 API를 보완하는 여러 기능들을 제공하는 &lt;span style=&quot;font-weight: bold;&quot;&gt;Commons Lang&lt;/span&gt; 라이브러리 정도만 사용해 보자.&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;b&gt;1. 메이븐을 설치한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://maven.apache.org/&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/]로 이동합니다.&quot;&gt;메이븐 홈페이지&lt;/a&gt;에서 메이븐을 &lt;a href=&quot;http://maven.apache.org/download.html&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/download.html]로 이동합니다.&quot;&gt;다운로드&lt;/a&gt;하고 적당한 폴더에 압축을 푼 뒤, 메이븐 폴더 내 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;bin 폴더를 PATH에 추가&lt;/span&gt;해준다. &lt;b&gt;mvn --help&lt;/b&gt; 명령어를 쳤을 때 사용법이 제대로 나온다면 다음을 진행할 수 있다.&amp;nbsp;mvn은 메이븐을 실행하는 명령어이다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 메이븐 프로젝트를 만든다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;작업할 폴더에서 다음 명령어를 실행한다. 도중에 옵션을 물어보기도 하는데 그냥 엔터를 쳐서 기본값으로 넘어갈 수 있다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;mvn archetype:generate -DgroupId=net.kjunine -DartifactId=sample -Dpackage=net.kjunine.sample -Dversion=1.0-SNAPSHOT&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;위 명령어에서 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;archetype:generate&lt;/span&gt;는 archetype 플러그인의 generate 골(Goal)이라는 것인데, 플러그인과 골은 지금은 몰라도 좋다. 그냥 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;프로젝트를 생성하는 옵션&lt;/span&gt;이라고 생각하면 된다. -D로 시작하는 것들은 생성할 프로젝트에 대한 정보를 나타내는 파라메터들이다. 각 파라메터는 다음을 의미한다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; &quot;&gt;
&lt;li&gt;groupId&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;프로젝트를 만드는 그룹, 조직, 회사 등을 나타내는 유일한 이름, 보통 자바 패키지처럼 URI를 거꾸로 써서 나타낸다.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;artifactId&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;아티팩트(artifact) 즉, 프로젝트를 나타내는 유일한 이름, 그룹 내 다른 아티팩트와 이름이 같아서는 안된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;package&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;프로젝트의 최상위 패키지&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;version&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;프로젝트의 현재 버전&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;프로젝트 생성이 성공하면, 명령어를 수행한 폴더 내에 artifactId 이름과 동일한 폴더가 생긴다. 그 폴더로 들어가면 다음과 같이 src 폴더와 &lt;b&gt;pom.xml&lt;/b&gt; 파일을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile25.uf.tistory.com/original/1166A7204ABB86FA04B24F&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/1166A7204ABB86FA04B24F&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;maven-01.png&quot; height=&quot;242&quot; width=&quot;358&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;pom.xml 파일은 바로 &lt;b&gt;Project Object Model(POM)&lt;/b&gt;이라는 것으로 메이븐 프로젝트에 대한 모든 설정을 저장하는 파일이다. &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;메이븐 프로젝트의 모든 것&lt;/span&gt;이다. 그 파일을 열어보면 다음과 같을 것이다. 앞서 프로젝트 생성 시 설정한 프로젝트 옵션 값들이 저장되어 있는 것을 볼 수 있다.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
  xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd&quot;&amp;gt;
  &amp;lt;modelVersion&amp;gt;4.0.0&amp;lt;/modelVersion&amp;gt;
  &amp;lt;groupId&amp;gt;net.kjunine&amp;lt;/groupId&amp;gt;
  &amp;lt;artifactId&amp;gt;sample&amp;lt;/artifactId&amp;gt;
  &amp;lt;packaging&amp;gt;jar&amp;lt;/packaging&amp;gt;
  &amp;lt;version&amp;gt;1.0-SNAPSHOT&amp;lt;/version&amp;gt;
  &amp;lt;name&amp;gt;sample&amp;lt;/name&amp;gt;
  &amp;lt;url&amp;gt;http://maven.apache.org&amp;lt;/url&amp;gt;
  &amp;lt;dependencies&amp;gt;
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;
      &amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;
      &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
  &amp;lt;/dependencies&amp;gt;
&amp;lt;/project&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;3. 라이브러리 의존 관계를 설정한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;POM에서 지금 관심을 가져야 할 부분은 바로 &lt;b&gt;&amp;lt;dependencies /&amp;gt; 부분&lt;/b&gt;이다. 여기에서 프로젝트의 의존 관계를 설정할 수 있다. 현재 JUnit 라이브러리는 자동으로 추가되어 있는 것을 볼 수 있다. 여기에 Commons Lang 라이브러리도 추가하자. &amp;lt;dependencies /&amp;gt; 부분을 다음과 같이 바꾸면 된다. &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;&amp;lt;dependency /&amp;gt; 항목을 하나 추가하는 것으로 라이브러리를 추가&lt;/span&gt;할 수 있다. 정말 편하지 않은가?! +_+&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;  &amp;lt;dependencies&amp;gt;
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;commons-lang&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;commons-lang&amp;lt;/artifactId&amp;gt;
      &amp;lt;version&amp;gt;2.4&amp;lt;/version&amp;gt;
    &amp;lt;/dependency&amp;gt;
    &amp;lt;dependency&amp;gt;
      &amp;lt;groupId&amp;gt;junit&amp;lt;/groupId&amp;gt;
      &amp;lt;artifactId&amp;gt;junit&amp;lt;/artifactId&amp;gt;
      &amp;lt;version&amp;gt;3.8.1&amp;lt;/version&amp;gt;
      &amp;lt;scope&amp;gt;test&amp;lt;/scope&amp;gt;
    &amp;lt;/dependency&amp;gt;
  &amp;lt;/dependencies&amp;gt;
&lt;/pre&gt;
&lt;p&gt;해당 라이브러리의 groupId와 artifactId는 어떻게 알 수 있는지 궁금할 것이다. 의외로 간단하다. &lt;a href=&quot;http://mvnrepository.com/&quot; target=&quot;_blank&quot; title=&quot;[http://mvnrepository.com/]로 이동합니다.&quot;&gt;Maven Repository 홈페이지&lt;/a&gt;에서 검색하면 된다. 다만 가끔 비슷한 게 많이 나와서 어떤 걸 써야할지 모를 때도 있다. (예를 들면, springframework) 그럴 때는 해당 라이브러리 홈페이지에서 정확한 메이븐 groupId와 artifactId를 찾아보던가 구글링할 수 밖에 없는 것 같다. 아직 내공이 부족하다. ㅠ_ㅠ&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. 자바 소스와 테스트를 작성한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;프로젝트 폴더 내 src 폴더에 보면 &lt;b&gt;main&lt;/b&gt; 폴더와 &lt;b&gt;test&lt;/b&gt; 폴더가 있는데 각각 자바 소스 파일과 테스트 파일들이 존재하는 곳이다. 메이븐은 이렇게 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;정해진 폴더 구조와 이름을 강제로 사용&lt;/span&gt;하게 해서 프로그래머의 고민을 덜어준다. 하지만 바꿀 수도 있는 것 같다.&lt;/p&gt;
&lt;p&gt;각 소스 폴더와 테스트 폴더에는 프로젝트 생성 시에 설정한 패키지 이름대로 폴더 구조가 만들어져 있고, 각각 App.java 파일과 AppTest.java 파일이 존재한다. 두 파일을 사용할 것은 아니니 삭제하자.&lt;/p&gt;
&lt;p&gt;그리고 소스 폴더의 해당 패키지에 다음 클래스 파일를 작성하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center; &quot;&gt;&lt;b&gt;Sample.java&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;package net.kjunine.sample;

import org.apache.commons.lang.StringUtils;

public class Sample {

	public static String reverse(String s) {
		return StringUtils.reverse(s);
	}

	public static void main(String[] args) {
		for (int i = 0; i &amp;lt; args.length; i++) {
			System.out.println(reverse(args[i]));
		}
	}

}
&lt;/pre&gt;
&lt;p&gt;Commons Lang 라이브러리의 StringUtils 유틸 클래스가 제공하는 reverse 메소드를 사용하여 입력받은 문자열들을 거꾸로 출력하는 프로그램을 만들었다.&lt;/p&gt;
&lt;p&gt;테스트 폴더의 해당 패키지에 위 클래스에 대한 테스트 클래스 파일도 작성하자.&lt;/p&gt;
&lt;p style=&quot;text-align: center; &quot;&gt;&lt;b&gt;SampleTest.java&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: java&quot;&gt;package net.kjunine.sample;

import junit.framework.TestCase;

public class SampleTest extends TestCase {

	public void testReverse() {
		String actual = Sample.reverse(&quot;hello&quot;);
		String expected = &quot;olleh&quot;;
		assertEquals(expected, actual);
	}

}
&lt;/pre&gt;
&lt;p&gt;JUnit 라이브러리를 사용한 간단한 테스트 클래스이다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5. 프로젝트를 빌드한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;프로젝트를 빌드하는 것은 간단하다. 프로젝트 폴더에서 다음 명령어를 실행하면 된다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;&amp;nbsp;mvn install&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;이 명령어를 이해하려면 메이븐에서 말하는 &lt;b&gt;빌드 생명주기(Build Lifecycle)&lt;/b&gt;라는 개념을 알아야 한다. 빌드 생명주기는 일련의 프로젝트 &lt;b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;빌드 단계(Build Phase)&lt;/span&gt;&lt;/b&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;들의 (순서있는) 집합&lt;/span&gt;이다. 빌드 단계는 compile, test, package, deploy 등과 같은 프로젝트를 빌드하는데 거치는 단계들을 의미한다. 그리고 각 빌드 단계마다 무슨 일을 해야하는지가 정해져 있다. 허접한 설명이라 더 자세한 내용은 &lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html]로 이동합니다.&quot;&gt;여기&lt;/a&gt;를 참조하자. (메이븐 책을 봐도 좋다.)&lt;/p&gt;
&lt;p&gt;위 명령어는 생명주기에서 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;install 단계까지의 전 단계를 실행하라&lt;/span&gt;는 것으로 compile, test, package, install 등의 단계들을 포함한다.&lt;/p&gt;
&lt;p&gt;그래서 위 명령어를 실행하면 중간에 다음과 같이 테스트 결과가 나온다. 그리고&amp;nbsp;빌드가 성공하면&amp;nbsp;&quot;BUILD SUCCESSFUL&quot;이 보일 것이다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;-------------------------------------------------------&lt;br /&gt;
&amp;nbsp;T E S T S&lt;br /&gt;
-------------------------------------------------------&lt;br /&gt;
Running net.kjunine.sample.SampleTest&lt;br /&gt;
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.031 sec&lt;br /&gt;
&lt;br /&gt;
Results :&lt;br /&gt;
&lt;br /&gt;
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0&lt;br /&gt;
&lt;br /&gt;
[INFO] [jar:jar]&lt;br /&gt;
[INFO] Building jar: D:\dev\workspaces\maven\sample\target\sample-1.0-SNAPSHOT.jar&lt;br /&gt;
[INFO] [install:install]&lt;br /&gt;
[INFO] Installing D:\dev\workspaces\maven\sample\target\sample-1.0-SNAPSHOT.jar to ...&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;br /&gt;
[INFO] BUILD SUCCESSFUL&lt;br /&gt;
[INFO] ------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;또, 프로젝트 폴더 내 &lt;b&gt;target&lt;/b&gt; 폴더에 생성된 클래스 파일들과 테스트 파일들 등이 들어있는 폴더들과 함께 jar 형태로 묶인 프로젝트 패키지 파일이 보인다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile25.uf.tistory.com/original/203F03124ABB95DF25FEDA&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile25.uf.tistory.com/image/203F03124ABB95DF25FEDA&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;maven-02.png&quot; height=&quot;305&quot; width=&quot;442&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;6. 프로그램을 실행한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;테스트도 성공하고 패키지 파일도 생성했으니 이제 실행만 하면 된다. 다음 명령어를 실행하라.
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;java -cp target/sample-1.0-SNAPSHOT.jar;&quot;%HOME%/.m2/repository/commons-lang/commons-lang/2.4/commons-lang-2.4.jar&quot; net.kjunine.sample.Sample hello kjunine&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;생각보다 실행 방법이 까다로운데 이것은 아직 플러그인을 배우지 않았기 때문이니 지금은 그냥 참고 넘어가자. &lt;b&gt;%HOME%/.m2/repository&lt;/b&gt; 폴더는 메이븐이 라이브러리와 플러그인을 다운로드해서 저장하는 로컬 저장 폴더이다. 그리고 Commons Lang 라이브러리는 위와 같은 경로에 존재한다. 실행 시에 Commons Lang 라이브러리를 사용하기 때문에 클래스패스에 추가한 것이다.&lt;/p&gt;
&lt;p&gt;실행 결과는 다음과 같다.&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;olleh&lt;br /&gt;
eninujk&lt;br /&gt;
&lt;br /&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;굳~&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;b&gt;이제 겨우 걸음마를 시작했을 뿐..&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;아직 메이븐에 대해 공부할 것은 많이 남아 있다. 플러그인과 골의 개념을 이해하고 POM에 설정할 수 있어야 한다. 그리고 이클립스에서 개발하기 위해 메이븐 이클립스 플러그인(maven-eclipse-plugin)을 사용하거나, 아니면 m2eclipse, Q4E와 같은 이클립스 플러그인을 사용할 수 있어야 한다. 실제 프로젝트를 진행할 때는 지금처럼 명령어에서 실행하기보다는 이클립스 플러그인을 사용하는 것이 훨씬 쉽고 간편할 것이다.&lt;/p&gt;
&lt;p&gt;방금 말한 내용들은 다음 포스트들에서 다룰 것이다. 이미 제목은 써놓았다. 다만 언제 완성될지는.. ^^;&lt;br /&gt;
&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(121, 165, 228); border-right-color: rgb(121, 165, 228); border-bottom-color: rgb(121, 165, 228); border-left-color: rgb(121, 165, 228); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;&amp;nbsp;참조:&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;margin-left: 4em; &quot;&gt;&lt;a href=&quot;http://maven.apache.org/index.html&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/index.html]로 이동합니다.&quot;&gt;Maven&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://maven.apache.org/guides/getting-started/index.html&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/guides/getting-started/index.html]로 이동합니다.&quot;&gt;Maven - Getting Started Guide&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html&quot; target=&quot;_blank&quot; title=&quot;[http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html]로 이동합니다.&quot;&gt;Maven - Introduction to the Build Lifecycle&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.sonatype.com/products/maven/documentation/book-defguide&quot; target=&quot;_blank&quot; title=&quot;[http://www.sonatype.com/products/maven/documentation/book-defguide]로 이동합니다.&quot;&gt;Maven: The Definitive Guide&lt;/a&gt; (Chapter 3. A Simple Maven Project)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-35-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>자동화</category>
			<category>java project</category>
			<category>Maven</category>
			<category>메이븐</category>
			<category>메이븐으로 자바 프로젝트를 관리하자</category>
			<category>자바 프로젝트</category>
			<category>자바 프로젝트 관리</category>
			<category>자바 프로젝트 자동화</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/35</guid>
			<comments>http://kjunine.net/entry/getting-started-with-maven-1#entry35comment</comments>
			<pubDate>Fri, 09 Oct 2009 22:28:18 +0900</pubDate>
		</item>
		<item>
			<title>기본 윈도우 크롬을 사용하지 않는(chromeless) 에어(AIR) 어플리케이션 만들기</title>
			<link>http://kjunine.net/entry/building-chromeless-air-application</link>
			<description>&lt;p style=&quot;text-align: left;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;나만의 멋진 윈도우 모양을 가지는 AIR 어플리케이션을 만들어 보자.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile8.uf.tistory.com/original/1858871A4ACB5821547FB9&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile8.uf.tistory.com/image/1858871A4ACB5821547FB9&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;building-chromeless-air-application-01.png&quot; height=&quot;575&quot; width=&quot;375&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;트위터 클라이언트인 DestroyTwitter처럼 AIR로 만들어진 데스크탑 애플리케이션들을 보면 대부분이 운영체제에서 사용하는 기본 윈도우 크롬(타이틀과 테두리 영역)을 사용하지 않고, 대신 자신만의 보기 좋은 윈도우 모양을 사용하고 있다. 이 포스트에서는 어떻게 하면 기본 윈도우 크롬을 사용하지 않을 수 있는지 보여주겠다. 어려워 보이지만 사실 매우 간단하다. 딱 두가지만 하면 된다.&lt;br /&gt;
&lt;/p&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;
1. 애플리케이션 디스크립터(Application Descriptor) 파일을 수정한다.&lt;/span&gt;&lt;br /&gt;
&lt;p&gt;플렉스 빌더로 만든 프로젝트에서는 메인 MXML 파일 이름에 &#039;-app&#039; 가 더 붙은 XML 파일이 애플리케이션 디스크립터 파일이다. FlashDevelop에서는 application.xml 파일이다.&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;애플리케이션 디스크립터 파일에서 &amp;lt;initialWindow /&amp;gt; 부분 중 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;&amp;lt;systemChrome /&amp;gt; 태그의 값은 &#039;none&#039;으로 설정&lt;/span&gt;하고, &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;&amp;lt;transparent /&amp;gt; 태그의 값은 &#039;true&#039;로 설정&lt;/span&gt;한다.&lt;br /&gt;
&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;	&amp;lt;initialWindow&amp;gt;
		...
		&amp;lt;systemChrome&amp;gt;none&amp;lt;/systemChrome&amp;gt;
		&amp;lt;transparent&amp;gt;true&amp;lt;/transparent&amp;gt;
		...
	&amp;lt;/initialWindow&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;2. 메인 MXML 파일을 수정한다.&lt;/span&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;p&gt;메인 MXML 파일에서 WindowedApplication 컴포넌트의 &lt;span style=&quot;text-decoration: underline;&quot;&gt;&#039;showFlexChrome&#039; 속성을 &#039;false&#039; 로 설정&lt;/span&gt;하면 된다.&lt;br /&gt;
&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; showFlexChrome=&quot;false&quot;&amp;gt;
	...
&amp;lt;/mx:WindowedApplication&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;이게 끝이다. 다음은 위 방법대로 만들어 본 예제이다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile29.uf.tistory.com/original/142945194ACB663E1D6B7F&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile29.uf.tistory.com/image/142945194ACB663E1D6B7F&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;building-chromeless-air-application-02.png&quot; height=&quot;246&quot; width=&quot;291&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;WindowedApplication 컴포넌트 안에 Canvas와 Button만 넣었다. 소스는 다음과 같다.&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;mx:WindowedApplication xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; showFlexChrome=&quot;false&quot;&amp;gt;
	&amp;lt;mx:Canvas width=&quot;100&quot; height=&quot;100&quot; backgroundColor=&quot;0xEEEEEE&quot; backgroundAlpha=&quot;0.5&quot;&amp;gt;
		&amp;lt;mx:Button label=&quot;hello&quot; x=&quot;10&quot; y=&quot;10&quot; width=&quot;80&quot; height=&quot;80&quot; /&amp;gt;
	&amp;lt;/mx:Canvas&amp;gt;
&amp;lt;/mx:WindowedApplication&amp;gt;
&lt;/pre&gt;
&lt;p&gt;&lt;b&gt;이제 남은 것은..&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;이제 기본 윈도우 크롬을 제거하는 방법은 알았다. 실제 애플리케이션처럼 제대로 만들려면 자체 윈도우 모양을 만들고 그 윈도우가 실제 윈도우처럼 동작하게 만들어야 할 것이다. 상단 타이틀을 클릭 &amp;amp; 드래그해서 이동하거나 최대/최소화하는 등의 기능을 구현해야 할 것이다. 이러한 기능들도 쉽게 만들 수 있도록 AIR에서 API로 제공하고 있으니 AIR 문서를 참조하면 어렵지 않게 만들 수 있을 것이다.&lt;/p&gt;
&lt;p&gt;다음에 기회가 되면 멋진 자체 윈도우를 만드는 것도 포스팅할 생각은 있다.. 생각만 있다.&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-44-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>플래시</category>
			<category>AIR</category>
			<category>chromeless</category>
			<category>flex</category>
			<category>showFlexChrome</category>
			<category>에어</category>
			<category>자체 윈도우</category>
			<category>플렉스</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/44</guid>
			<comments>http://kjunine.net/entry/building-chromeless-air-application#entry44comment</comments>
			<pubDate>Wed, 07 Oct 2009 00:59:50 +0900</pubDate>
		</item>
		<item>
			<title>FlexUnit - Flex(플렉스) 단위 테스트 프레임워크</title>
			<link>http://kjunine.net/entry/flex-unit-test</link>
			<description>&lt;p&gt;&lt;b&gt;Flex에서 단위 테스트를 하자!&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;나는 모르고 있었다. Flex에도 단위 테스트를 위한 프레임워크가 있다는 것을.. 바로 &lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexunit/&quot; target=&quot;_blank&quot; title=&quot;[http://opensource.adobe.com/wiki/display/flexunit/]로 이동합니다.&quot;&gt;FlexUnit&lt;/a&gt;으로 플렉스에서 단위 테스트를 할 수가 있다. 비슷한 프레임워크로 &lt;a href=&quot;http://asunit.org/&quot; target=&quot;_blank&quot; title=&quot;[http://asunit.org/]로 이동합니다.&quot;&gt;AsUnit&lt;/a&gt;이란 게 있는데, 아주 살짝 살펴보니 다음과 같은 차이가 있는 것 같다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;ul style=&quot;list-style-type: disc; &quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://asunit.org/&quot; target=&quot;_blank&quot; title=&quot;[http://asunit.org/]로 이동합니다.&quot;&gt;AsUnit&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;Flex SDK가 없어도 사용할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;&lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexunit/&quot; target=&quot;_blank&quot; title=&quot;[http://opensource.adobe.com/wiki/display/flexunit/]로 이동합니다.&quot;&gt;FlexUnit&lt;/a&gt;&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;테스트 결과를&amp;nbsp;&lt;u&gt;쌔끈한 UI&lt;/u&gt;로 보여준다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://www.flashdevelop.org/&quot; target=&quot;_blank&quot; title=&quot;[http://www.flashdevelop.org/]로 이동합니다.&quot;&gt;FlashDevelop&lt;/a&gt;에서 FlexUnit을 사용해 예제를 하나 만들어 보았다. 참고로 &lt;a href=&quot;http://www.flashdevelop.org/&quot; target=&quot;_blank&quot; title=&quot;[http://www.flashdevelop.org/]로 이동합니다.&quot;&gt;FlashDevelop&lt;/a&gt;은  유료 소프트웨어인 Flash Builder (구 Flex Builder)를 대체할 수 있는 오픈소스 소프트웨어이다. (&lt;a href=&quot;http://www.flashdevelop.org/community/viewtopic.php?f=11&amp;amp;t=5339&quot; target=&quot;_blank&quot; title=&quot;[http://www.flashdevelop.org/community/viewtopic.php?f=11&amp;amp;t=5339]로 이동합니다.&quot;&gt;여기&lt;/a&gt;에서 최신버전을 다운로드 받을 수 있다.)&lt;/p&gt;
&lt;p&gt;그럼 예제를 따라해보자. 잠깐! 그 전에&amp;nbsp;&lt;a href=&quot;http://download.macromedia.com/pub/opensource/flexunit/flexunit0_9.zip&quot; target=&quot;_self&quot; title=&quot;[http://download.macromedia.com/pub/opensource/flexunit/flexunit0_9.zip]로 이동합니다.&quot;&gt;여기&lt;/a&gt;에서&amp;nbsp;FlexUnit 라이브러리를&amp;nbsp;다운로드하고&amp;nbsp;시작하자. 다운로드한 압축파일 속 bin 폴더의 &#039;FlexUnit.swc&#039; 파일을 사용하게 될 것이다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(193, 193, 193); border-right-color: rgb(193, 193, 193); border-bottom-color: rgb(193, 193, 193); border-left-color: rgb(193, 193, 193); background-color: rgb(238, 238, 238); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p&gt;&amp;nbsp;&lt;b&gt;1. FlashDevelop에서 Flex 3 프로젝트를 생성한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile29.uf.tistory.com/original/19540B1A4AAA77BE07A1AD&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile29.uf.tistory.com/image/19540B1A4AAA77BE07A1AD&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;flexunit-01.png&quot; height=&quot;476&quot; width=&quot;543&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;메뉴에서 &lt;u&gt;Project &amp;gt; New Project&lt;/u&gt;를 선택한다. 템플릿에서 &lt;u&gt;Flex 3 Project&lt;/u&gt;를 선택하고, 프로젝트 이름, 저장 위치, 기본 패키지 이름을 채우고 프로젝트를 생성한다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile5.uf.tistory.com/original/1109261F4AAB022C944B07&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile5.uf.tistory.com/image/1109261F4AAB022C944B07&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;flexunit-03.png&quot; height=&quot;208&quot; width=&quot;203&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;프로젝트가 생성되면 우측 프로젝트 뷰에서 src 폴더 속 방금 지정한 패키지에 &#039;Main.mxml&#039; 파일이 생긴 것을 볼 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2. 해당 프로젝트에 FlexUnit 라이브러리를 추가한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile27.uf.tistory.com/original/127070284AAA7979758380&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile27.uf.tistory.com/image/127070284AAA7979758380&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;flexunit-02.png&quot; height=&quot;362&quot; width=&quot;302&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;lib 폴더에 앞에서 말했던 FlexUnit.swc 파일을 복사한다. 그리고 FlexUnit.swc 파일에서 마우스 오른쪽 클릭한 후, &lt;u&gt;Add To Library&lt;/u&gt;를 선택하면 된다. 참 쉽죠~잉?&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. 테스트하고자 하는 ActionScript 클래스를 만든다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;net.kjunine.test.sample.Sample.as&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: actionscript3&quot;&gt;package net.kjunine.test.sample 
{
	
	public class Sample 
	{
		
		public static function sum(values:Array):Number
		{
			var sum:Number = 0;
			
			for (var i:int = 0; i &amp;lt; values.length; i++) 
			{
				sum += parseInt(values[i]);
			}
			
			return sum;
		}
		
	}
	
}&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;Sample 클래스에 배열을 파라메터로 받아들여서 그 배열의 모든 엘리먼트들의 합을 구해서 반환하는 sum이라는 메소드를 만들어 보았다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;4. 방금 만든 ActionScript 클래스를 테스트할 TestCase 클래스를 만든다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile26.uf.tistory.com/original/17485F274AAB30CF73E204&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile26.uf.tistory.com/image/17485F274AAB30CF73E204&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;flexunit-04.png&quot; height=&quot;438&quot; width=&quot;372&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;먼저 테스트 소스가 들어갈 test 폴더를 만들고 그 안에 폴더를 추가해 src와 같은 패키지 구조로 만들어 준다. 그리고 메뉴에서 &lt;u&gt;Project &amp;gt; Properties&lt;/u&gt;를 선택해서 classpath 탭을 선택하고 방금 만든 &lt;u&gt;test 폴더를 클래스패스에 추가&lt;/u&gt;한다. (지금처럼 소스와 테스트를 폴더로 분리하는 것이 바람직한 방법이다.)&lt;/p&gt;
&lt;p&gt;net.kjunine.test.sample.SampleTest.as&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: actionscript3&quot;&gt;package net.kjunine.test.sample 
{
	import flexunit.framework.TestCase;
	
	public class SampleTest extends TestCase
	{
		
		public function testSum():void
		{
			var values:Array = new Array(&#039;8&#039;, &#039;20&#039;, &#039;10&#039;, &#039;7&#039;, &#039;15&#039;);
			
			var actual:Number = Sample.sum(values);
			var expected:Number = 60;
			
			assertEquals(expected, actual);
		}
		
	}
	
}&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;TestCase를 상속받은 SampleTest 클래스를 만들어서 Sample.sum() 메소드를 테스트한다. TestCase 클래스는 JUnit처럼 다양한 assert 메소드들을 제공한다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;5. 테스트용 Main.mxml을 만든다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;net.kjunine.test.Main.mxml&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;
&amp;lt;mx:Application xmlns:mx=&quot;http://www.adobe.com/2006/mxml&quot; xmlns:flexui=&quot;flexunit.flexui.*&quot; creationComplete=&quot;this.init();&quot;&amp;gt;
	&amp;lt;mx:Script&amp;gt;
		&amp;lt;![CDATA[
		import flexunit.framework.TestSuite;
		import net.kjunine.test.sample.SampleTest;
		
		private function init():void {
			var test:TestSuite = new TestSuite();
			test.addTestSuite(SampleTest);
			testRunner.test = test;
			testRunner.startTest();
		}
		]]&amp;gt;
	&amp;lt;/mx:Script&amp;gt;
	&amp;lt;flexui:TestRunnerBase id=&quot;testRunner&quot; /&amp;gt;
&amp;lt;/mx:Application&amp;gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;TestRunnerBase와 TestSuite가 사용된다. 테스트를 더 추가하고 싶으면 다른 테스트 클래스를 &lt;b&gt;TestSuite.addTestSuite()&lt;/b&gt; 메소드로 추가해주기만 하면 된다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile5.uf.tistory.com/original/194366274AAB31E3808B82&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile5.uf.tistory.com/image/194366274AAB31E3808B82&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;flexunit-05.png&quot; height=&quot;340&quot; width=&quot;243&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;예제의 모든 내용을 만들었다. 그러면 프로젝트 구조는 위와 같을 것이다.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;6. 테스트를 실행한다.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;FlashDevelop에서 프로젝트를 실행하는 것은 메뉴에서 &lt;u&gt;Project &amp;gt; Test Movie&lt;/u&gt;를 선택하거나 &lt;u&gt;단축키 F5&lt;/u&gt;를 누르면 된다. 그러나 실행하기 전에 &lt;b&gt;test 폴더의 Main.mxml 파일이 실행되도록&lt;/b&gt; 하자.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile22.uf.tistory.com/original/207A07144AAB33292D4280&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile22.uf.tistory.com/image/207A07144AAB33292D4280&quot; alt=&quot;&quot; filemime=&quot;image/jpeg&quot; filename=&quot;flexunit-06.png&quot; height=&quot;390&quot; width=&quot;360&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;위 그림과 같이 test 폴더의 Main.mxml 파일에서 마우스 오른쪽 클릭한 후 &lt;u&gt;Always Compile&lt;/u&gt;을 선택한다. 이렇게 하면 Test Movie를 실행했을 때 test 폴더의 Main.mxml 파일이 실행될 것이다. (만약 다시 src 폴더의 Main.mxml 파일이 실행되게 하려면 src 폴더의 Main.mxml 파일에서 같은 방법대로 하면 된다.)&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfile2.uf.tistory.com/original/160D451E4AAB34A08B8F05&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfile2.uf.tistory.com/image/160D451E4AAB34A08B8F05&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;cfile2.uf@160D451E4AAB34A08B8F05.png&quot; height=&quot;401&quot; width=&quot;600&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;이제 실행해보자. 위 그림과 같이 테스트가 성공하였는가? 그리고 UI가 정말 이쁘지 않은가? ^-^ 화면 중간에 보이는 드롭다운 박스의 옵션을 선택해서 리스트에 보일 테스트 결과를 변경할 수 있다.&lt;/p&gt;
&lt;p&gt;&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://kjunine.tistory.com/attachment/cfile7.uf@186263114AAB88B73DD3FA.zip&quot;&gt;&lt;img src=&quot;http://cfs.tistory.com/blog/image/extension/zip.gif&quot; alt=&quot;&quot; style=&quot;vertical-align: middle;&quot; /&gt; flex-unit.zip&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;방금 만든 프로젝트 파일들을 압축해서 올렸다. 참고하시라.&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;이제 FlexUnit로 Flex에서 단위 테스트를 할 수 있게 되었다. 그 동안 ActionScript 클래스를 테스트 해보기 위해서 trace()를 남발했었는데 이제부터는 테스트를 작성해서 테스트하면 안심할 수 있을 것이다.&lt;/p&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(121, 165, 228); border-right-color: rgb(121, 165, 228); border-bottom-color: rgb(121, 165, 228); border-left-color: rgb(121, 165, 228); background-color: rgb(219, 232, 251); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
&lt;p style=&quot;&quot;&gt;참조:&lt;br /&gt;
&lt;/p&gt;
&lt;p style=&quot;margin-left: 4em; &quot;&gt;&lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexunit/FlexUnit&quot; target=&quot;_blank&quot;&gt;FlexUnit&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://opensource.adobe.com/wiki/display/flexunit/Developer+Documentation&quot; target=&quot;_blank&quot; title=&quot;[http://www.adobe.com/cfusion/communityengine/index.cfm?event=dogooglesearch&amp;amp;searchTagName=flexunit&amp;amp;productId=2&amp;amp;startRow=1&amp;amp;loc=en_US]로 이동합니다.&quot;&gt;FlexUnit Developer Documentation&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-34-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>플래시</category>
			<category>flex</category>
			<category>flex unit test</category>
			<category>FlexUnit</category>
			<category>Flex에서도 단위 테스트를 할 수 있다</category>
			<category>단위 테스트</category>
			<category>단위 테스트는 필수다</category>
			<category>플렉스</category>
			<category>플렉스 단위 테스트</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/34</guid>
			<comments>http://kjunine.net/entry/flex-unit-test#entry34comment</comments>
			<pubDate>Sat, 12 Sep 2009 20:42:10 +0900</pubDate>
		</item>
		<item>
			<title>티스토리 블로그로 돌아오다.</title>
			<link>http://kjunine.net/entry/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A1%9C-%EB%8F%8C%EC%95%84%EC%98%A4%EB%8B%A4</link>
			<description>&lt;div&gt;
&lt;b&gt;현재로서는 최상의 선택이다.&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&lt;br /&gt;
&lt;/div&gt;&lt;div&gt;
거의 일년만에 티스토리 블로그에 포스팅을 한다. 작년 9월 30일을 마지막으로 여기에 더 이상 포스트를 작성하지 않았다. 포스팅을 하는 데 소요되는 시간이 아까웠기 때문이다. 차라리 그 시간에 책이라도 더 보자는 생각이었다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그러다 올해 6월 즈음에 우연히&amp;nbsp;&lt;a href=&quot;http://www.wordpress.com/&quot; target=&quot;_blank&quot; title=&quot;[http://www.wordpress.com/]로 이동합니다.&quot;&gt;WordPress.com&lt;/a&gt;이라는 블로그 호스팅 서비스를 알게 되었다. WordPress.com에서 서비스하는 &lt;a href=&quot;http://www.wordpress.org/&quot; target=&quot;_blank&quot; title=&quot;[http://www.wordpress.org/]로 이동합니다.&quot;&gt;워드프레스&lt;/a&gt;는 굉장히 유명한 블로그 도구로, 나는 특히 워드프레스의 &lt;b&gt;에디터&lt;/b&gt;가 마음에 들었다. 왜냐하면 다른 블로그 도구에 비해서 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;웹 표준을 잘 따르고 있다&lt;/span&gt;고 생각했기 때문이다. 워드프레스의 에디터는 인라인 스타일을 줄이고 의미적으로&amp;nbsp;구조화된 포스트를 작성하는 것이 가능해 보였다. 그래서&amp;nbsp;바로 WordPress.com에&amp;nbsp;블로그를 개설하고 워드프레스를 찬양하는&amp;nbsp;글도 썼지만, 그 후로도&amp;nbsp;여전히 포스팅을 게을리 하였다. ^^;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
하지만 최근에 다시 불이 붙게 되었다. 회사에서 스프링 스터디를 했는데 나도 준비를 해서 발표를 하면서 깨달은것이 있었다. 타인을 위해서&amp;nbsp;발표를 준비하는 과정에서 &lt;b&gt;내가 더 많이 배운다&lt;/b&gt;는 것이다. 그리고&amp;nbsp;이와 비슷한 효과를&amp;nbsp;블로그를 운영하면서도 얻을 수 있을 거라고 생각했다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그래서 몇 가지 주제를 선택해서 공부를 하고 WordPress.com에서 포스트를 작성하다가 안타까운 사실을 알게 되었다. WordPress.com에서는 원래 워드프레스에 포함된 기능들에 비해 &lt;span class=&quot;Apple-style-span&quot; style=&quot;text-decoration: underline;&quot;&gt;제한된 기능들이 너무 많다&lt;/span&gt;는 것이다. 그리고 더 많은 기능을 사용하려면 유료로 업그레이드를 해야 한다는 것이다. 그래서 고민을 해 보았다. 최적의 해결책은 &lt;i&gt;&quot;워드프레스 + 서버 호스팅&quot;&lt;/i&gt;이겠지만, 간편하게 &lt;b&gt;티스토리 블로그로 만족하는 것이 현실적인 대안&lt;/b&gt;인 것 같았다.&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div&gt;
그래서 티스토리에 돌아와서 지저분한 플러그인들을 제거하고 이 글을 쓰고 있는 것이다. 이 짧은 포스트를 작성하는 데에도 한 시간 가까이 걸리는구나.. OTL &lt;b&gt;글을 더 잘 쓸 수 있도록 많이 써야겠다.&lt;/b&gt;&lt;/div&gt;</description>
			<category>기타</category>
			<category>블로그</category>
			<category>블로그 열심히 쓸래</category>
			<category>워드프레스</category>
			<category>티스토리</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/33</guid>
			<comments>http://kjunine.net/entry/%ED%8B%B0%EC%8A%A4%ED%86%A0%EB%A6%AC-%EB%B8%94%EB%A1%9C%EA%B7%B8%EB%A1%9C-%EB%8F%8C%EC%95%84%EC%98%A4%EB%8B%A4#entry33comment</comments>
			<pubDate>Thu, 10 Sep 2009 22:32:43 +0900</pubDate>
		</item>
		<item>
			<title>톰캣(Tomcat) 5.x GET 방식 한글 인코딩에 문제가 있다니..</title>
			<link>http://kjunine.net/entry/%ED%86%B0%EC%BA%A3Tomcat-5x-GET-%EB%B0%A9%EC%8B%9D-%ED%95%9C%EA%B8%80-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%97%90-%EB%AC%B8%EC%A0%9C%EA%B0%80-%EC%9E%88%EB%8B%A4%EB%8B%88</link>
			<description>여태껏 잘 되는 줄 알았던 한글 처리가 POST 방식일 때만 잘 되었던 거였어요..&lt;br /&gt;
우연히 오늘 GET 방식으로 보내다가 한글이 깨지는 현상을 발견하고 이유를 찾다가 알게 되었네요..&lt;br /&gt;
&lt;br /&gt;
다른 블로그에 관련 내용이 많이 있어서 링크만 걸어둡니다.&lt;br /&gt;
다행히 해결책도 함께 다루고 있네요&lt;br /&gt;
&lt;br /&gt;
아무튼 쇼크~! 충격입니다. @_@&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px solid rgb(159, 211, 49); padding: 10px; background-color: rgb(231, 253, 181);&quot; class=&quot;txc-textbox&quot;&gt;
참고&lt;br /&gt;
&lt;div style=&quot;margin-left: 4em;&quot;&gt;
&lt;a title=&quot;[http://kwon37xi.egloos.com/1462013]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://kwon37xi.egloos.com/1462013&quot;&gt;http://kwon37xi.egloos.com/1462013&lt;/a&gt;&lt;br /&gt;
&lt;a title=&quot;[http://blog.outsider.ne.kr/186]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://blog.outsider.ne.kr/186&quot;&gt;http://blog.outsider.ne.kr/186&lt;/a&gt;&lt;br /&gt;
&lt;a title=&quot;[http://apollo89.com/blog/archive/200805?page=5]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://apollo89.com/blog/archive/200805?page=5&quot;&gt;http://apollo89.com/blog/archive/200805?page=5&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>기타</category>
			<category>Get</category>
			<category>Tomcat</category>
			<category>Tomcat 5.x</category>
			<category>인코딩</category>
			<category>톰캣</category>
			<category>톰캣 5.x</category>
			<category>한글</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/32</guid>
			<comments>http://kjunine.net/entry/%ED%86%B0%EC%BA%A3Tomcat-5x-GET-%EB%B0%A9%EC%8B%9D-%ED%95%9C%EA%B8%80-%EC%9D%B8%EC%BD%94%EB%94%A9%EC%97%90-%EB%AC%B8%EC%A0%9C%EA%B0%80-%EC%9E%88%EB%8B%A4%EB%8B%88#entry32comment</comments>
			<pubDate>Tue, 30 Sep 2008 21:00:46 +0900</pubDate>
		</item>
		<item>
			<title>나도 구글 크롬 한번 써보고 싶다~!!</title>
			<link>http://kjunine.net/entry/%EB%82%98%EB%8F%84-%EA%B5%AC%EA%B8%80-%ED%81%AC%EB%A1%AC-%ED%95%9C%EB%B2%88-%EC%8D%A8%EB%B3%B4%EA%B3%A0-%EC%8B%B6%EB%8B%A4</link>
			<description>구글 크롬, 구글 크롬 그러길래 한번 써볼려고 회사 노트북에 깔았습니다.&lt;br /&gt;
그런데 아예 동작을 안 하네요 -_-&lt;br /&gt;
검색해봐도 나오지 않는 것 같은데요..&lt;br /&gt;
&lt;br /&gt;증상을 보면..&lt;br /&gt;
&lt;br /&gt;1. 구글 크롬을 실행한다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs7.tistory.com/original/19/tistory/2008/09/19/08/32/48d2e51a998d5&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs7.tistory.com/image/19/tistory/2008/09/19/08/32/48d2e51a998d5&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;chrome-1.png&quot; height=&quot;633&quot; width=&quot;572&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
2. 주소를 입력한다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs7.tistory.com/original/9/tistory/2008/09/19/08/32/48d2e51b4a0f5&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs7.tistory.com/image/9/tistory/2008/09/19/08/32/48d2e51b4a0f5&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;chrome-2.png&quot; height=&quot;633&quot; width=&quot;572&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
3. 엔터를 치는 순간 다음과 같은 화면이 나온다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs7.tistory.com/original/19/tistory/2008/09/19/08/32/48d2e51bda19a&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs7.tistory.com/image/19/tistory/2008/09/19/08/32/48d2e51bda19a&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;chrome-3.png&quot; height=&quot;633&quot; width=&quot;572&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
그리고 다른 버그도 있어요.&lt;br /&gt;
&lt;br /&gt;1. 구글 크롬을 실행한다. (북마크바 항상 보기 옵션이 켜진 상태입니다.)&lt;br /&gt;
2. 북마크바를 마우스의 오른쪽 버튼으로 클릭을 한다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs7.tistory.com/original/19/tistory/2008/09/19/08/32/48d2e51a998d5&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs7.tistory.com/image/19/tistory/2008/09/19/08/32/48d2e51a998d5&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;chrome-1.png&quot; height=&quot;633&quot; width=&quot;572&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
3. 헉! 다운됩니다.&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs7.tistory.com/original/22/tistory/2008/09/19/08/32/48d2e51c61dfe&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs7.tistory.com/image/22/tistory/2008/09/19/08/32/48d2e51c61dfe&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;chrome-4.png&quot; height=&quot;121&quot; width=&quot;407&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
같은 증상을 겪고 계신 분이 또 없나요? @_@&lt;br /&gt;
&lt;br /&gt;제 옆자리 분은 잘 쓰고 계십니다. 부럽~ ㅠ_ㅠ&lt;br /&gt;
집에서 깔아봐야겠네요..&lt;br /&gt;
그런데 집에만 가면 왜 까먹을까요? 몇일째 못 깔아봤어요 ㅋㅋ&lt;br /&gt;
&lt;br /&gt;&lt;div class=&quot;entry-ccl&quot; style=&quot;clear: both; text-align: right; margin-bottom: 10px&quot;&gt;
	&lt;img id=&quot;ccl-icon-31-0&quot; class=&quot;entry-ccl-by&quot; src=&quot;http://cfs.tistory.com/static/admin/editor/ccl_black01.png&quot; alt=&quot;저작자 표시&quot;/&gt;
	&lt;!--
	&lt;rdf:RDF xmlns=&quot;http://web.resource.org/cc/&quot; xmlns:dc=&quot;http://purl.org/dc/elements/1.1/&quot; xmlns:rdf=&quot;http://www.w3.org/1999/02/22-rdf-syntax-ns#&quot;&gt;
		&lt;Work rdf:about=&quot;&quot;&gt;
			&lt;license rdf:resource=&quot;http://creativecommons.org/licenses/by-fr/2.0/kr/&quot; /&gt;
		&lt;/Work&gt;
		&lt;License rdf:about=&quot;http://creativecommons.org/licenses/by-fr/&quot;&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Reproduction&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/Distribution&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Notice&quot;/&gt;
			&lt;requires rdf:resource=&quot;http://web.resource.org/cc/Attribution&quot;/&gt;
			&lt;permits rdf:resource=&quot;http://web.resource.org/cc/DerivativeWorks&quot;/&gt;
		&lt;/License&gt;
	&lt;/rdf:RDF&gt;
	--&gt;
&lt;/div&gt;
</description>
			<category>기타</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/31</guid>
			<comments>http://kjunine.net/entry/%EB%82%98%EB%8F%84-%EA%B5%AC%EA%B8%80-%ED%81%AC%EB%A1%AC-%ED%95%9C%EB%B2%88-%EC%8D%A8%EB%B3%B4%EA%B3%A0-%EC%8B%B6%EB%8B%A4#entry31comment</comments>
			<pubDate>Fri, 19 Sep 2008 08:40:15 +0900</pubDate>
		</item>
		<item>
			<title>앤트(Ant)에서 톰캣에 웹 애플리케이션을 디플로이하는 방법..</title>
			<link>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%97%90%EC%84%9C-%ED%86%B0%EC%BA%A3%EC%97%90-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%84-%EB%94%94%ED%94%8C%EB%A1%9C%EC%9D%B4%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95</link>
			<description>톰캣에 웹 애플리케이션을 디플로이하는 방법에는 두 가지가 있어요.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;${톰캣_설치_경로}&lt;sup class=&quot;footnote&quot;&gt;&lt;a id=&quot;footnote_link_28_1&quot; href=&quot;#footnote_28_1&quot; onmouseover=&quot;tistoryFootnote.show(this, 28, 1)&quot; onmouseout=&quot;tistoryFootnote.hide(28, 1)&quot; style=&quot;color: #f9650d; font-family: Verdana, Sans-serif&quot;&gt;&lt;span style=&quot;display: none&quot;&gt;[각주:&lt;/span&gt;1&lt;span style=&quot;display: none&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;/webapps 디렉토리에 &lt;span style=&quot;font-weight: bold;&quot;&gt;war 파일&lt;/span&gt;을 추가한다.&lt;/li&gt;
&lt;li&gt;${톰캣_설치_경로}/conf/Catalina/localhost 디렉토리에 &lt;span style=&quot;font-weight: bold;&quot;&gt;context 파일&lt;/span&gt;을 추가한다.&lt;br /&gt;
&lt;/li&gt;
&lt;/ul&gt;
war 파일은 일반적인 웹 애플리케이션 파일이구요.&lt;br /&gt;
context 파일 내용은 대략 다음과 같아요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Context path=&quot;/${웹애플리케이션_이름}&quot; docBase=&quot;${웹애플리케이션_디렉토리}&quot; reloadable=&quot;true&quot;&amp;gt;&lt;br /&gt;
&amp;lt;/Context&amp;gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
첫번째 방법이 보통 많이 쓰이는 방법이죠. 저는 두번째 방법을 더 선호합니다만..&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;hr style=&quot;border-style: solid none none; border-color: black -moz-use-text-color -moz-use-text-color; border-width: 1px 0px 0px; height: 1px; display: block;&quot;&gt;&lt;/div&gt;
&lt;br /&gt;
그런데 사실 한 가지 방법이 더 있습니다.&lt;br /&gt;
&lt;br /&gt;
톰캣의 &lt;span style=&quot;font-weight: bold;&quot;&gt;manager 어플리케이션&lt;/span&gt;을 이용하는 것입니다. ^-^/&lt;br /&gt;
&lt;br /&gt;
톰캣의 manager 어플리케이션을 사용하려면 다음을 확인합니다.&lt;br /&gt;
&lt;br /&gt;
1.톰캣에 manager 어플리케이션이 설치되어 있는지 확인한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp; (5.0, 5.5, 6.0 버전 모두 기본적으로 설치되어 있네요..)&lt;br /&gt;
&lt;br /&gt;
2. manager 권한이 있는 사용자를 등록한다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ${톰캣_설치_경로}\conf\tomcat-users.xml 파일에 다음 내용을 추가합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
&amp;lt;role rolename=&quot;manager&quot;/&amp;gt;&lt;br /&gt;
&amp;lt;user username=&quot;${사용자_아이디}&quot; password=&quot;${사용자_암호}&quot; roles=&quot;manager&quot;/&amp;gt;&lt;/div&gt;
&lt;br /&gt;
3. 서버를 띄우고 &lt;a title=&quot;[http://localhost:8080/manager/html]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://localhost:8080/manager/html&quot;&gt;http://localhost:8080&lt;/a&gt;&lt;a title=&quot;[http://localhost:8080/manager/html]로 이동합니다.&quot; target=&quot;_blank&quot; href=&quot;http://localhost:8080/manager/html&quot;&gt;/manager/html&lt;/a&gt; 로 접속합니다.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; (등록한 사용자의 아이디/암호를 입력합니다.)&lt;br /&gt;
&lt;br /&gt;
다음과 같은 화면에서 Deploy를 실행하면 됩니다.&lt;br /&gt;
Context 파일 내용을 설정하거나 war 파일을 업로드해서 디플로이할 수 있습니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;imageblock center&quot; style=&quot;text-align: center; clear: both;&quot;&gt;&lt;a href=&quot;http://cfs8.tistory.com/original/9/tistory/2008/09/19/13/38/48d32cdb6614d&quot; rel=&quot;lightbox&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://cfs8.tistory.com/image/9/tistory/2008/09/19/13/38/48d32cdb6614d&quot; alt=&quot;&quot; filemime=&quot;&quot; filename=&quot;manager.png&quot; height=&quot;715&quot; width=&quot;620&quot;/&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;
그리고 매니저에서는 다른 웹 애플리케이션을 실행/중지/리로드/언디플로이할 수 있어요~&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;hr style=&quot;border-style: solid none none; border-color: black -moz-use-text-color -moz-use-text-color; border-width: 1px 0px 0px; height: 1px; display: block;&quot;&gt;&lt;/div&gt;
&lt;br /&gt;
이제부터 본론으로 들어갑니다.&lt;br /&gt;
&lt;br /&gt;
제가 말씀드릴 &lt;span style=&quot;font-style: italic;&quot;&gt;앤트로 톰캣에 웹 애플리케이션을 디플로이하는 방법&lt;/span&gt;은 내부적으로 톰캣의 manager 애플리케이션을 이용합니다. 그러므로 &lt;span style=&quot;font-weight: bold;&quot;&gt;먼저 톰캣의 manager 애플리케이션이 설정이 되어있어야 해요~!&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
빌드 파일에서 &lt;span style=&quot;font-weight: bold;&quot;&gt;사용할 프로퍼티&lt;/span&gt; 파일은 다음과 같습니다. (sample 어플리케이션을 배포한다고 가정합니다.)&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
# catalina home directory&lt;br /&gt;
catalina.home=&lt;span style=&quot;font-weight: bold;&quot;&gt;C:\Tomcat&lt;/span&gt;&lt;sup class=&quot;footnote&quot;&gt;&lt;a id=&quot;footnote_link_28_2&quot; href=&quot;#footnote_28_2&quot; onmouseover=&quot;tistoryFootnote.show(this, 28, 2)&quot; onmouseout=&quot;tistoryFootnote.hide(28, 2)&quot; style=&quot;color: #f9650d; font-family: Verdana, Sans-serif&quot;&gt;&lt;span style=&quot;display: none&quot;&gt;[각주:&lt;/span&gt;2&lt;span style=&quot;display: none&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
catalina.ant.jar=${catalina.home}/server/lib/catalina-ant.jar&lt;br /&gt;
catalina.tasks.file=&lt;span style=&quot;font-weight: bold;&quot;&gt;catalina.tasks&lt;/span&gt;&lt;sup class=&quot;footnote&quot;&gt;&lt;a id=&quot;footnote_link_28_3&quot; href=&quot;#footnote_28_3&quot; onmouseover=&quot;tistoryFootnote.show(this, 28, 3)&quot; onmouseout=&quot;tistoryFootnote.hide(28, 3)&quot; style=&quot;color: #f9650d; font-family: Verdana, Sans-serif&quot;&gt;&lt;span style=&quot;display: none&quot;&gt;[각주:&lt;/span&gt;3&lt;span style=&quot;display: none&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;br /&gt;
# catalina manager configurations&lt;br /&gt;
catalina.manager.url=http://localhost:8080/manager&lt;br /&gt;
catalina.manager.user.name=&lt;span style=&quot;font-weight: bold;&quot;&gt;test&lt;/span&gt;&lt;sup class=&quot;footnote&quot;&gt;&lt;a id=&quot;footnote_link_28_4&quot; href=&quot;#footnote_28_4&quot; onmouseover=&quot;tistoryFootnote.show(this, 28, 4)&quot; onmouseout=&quot;tistoryFootnote.hide(28, 4)&quot; style=&quot;color: #f9650d; font-family: Verdana, Sans-serif&quot;&gt;&lt;span style=&quot;display: none&quot;&gt;[각주:&lt;/span&gt;4&lt;span style=&quot;display: none&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
catalina.manager.user.password=&lt;span style=&quot;font-weight: bold;&quot;&gt;test&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
# application configurations&lt;br /&gt;
application.path=&lt;span style=&quot;font-weight: bold;&quot;&gt;/sample&lt;/span&gt;&lt;sup class=&quot;footnote&quot;&gt;&lt;a id=&quot;footnote_link_28_5&quot; href=&quot;#footnote_28_5&quot; onmouseover=&quot;tistoryFootnote.show(this, 28, 5)&quot; onmouseout=&quot;tistoryFootnote.hide(28, 5)&quot; style=&quot;color: #f9650d; font-family: Verdana, Sans-serif&quot;&gt;&lt;span style=&quot;display: none&quot;&gt;[각주:&lt;/span&gt;5&lt;span style=&quot;display: none&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
application.context=&lt;span style=&quot;font-weight: bold;&quot;&gt;sample.xml&lt;/span&gt;&lt;sup class=&quot;footnote&quot;&gt;&lt;a id=&quot;footnote_link_28_6&quot; href=&quot;#footnote_28_6&quot; onmouseover=&quot;tistoryFootnote.show(this, 28, 6)&quot; onmouseout=&quot;tistoryFootnote.hide(28, 6)&quot; style=&quot;color: #f9650d; font-family: Verdana, Sans-serif&quot;&gt;&lt;span style=&quot;display: none&quot;&gt;[각주:&lt;/span&gt;6&lt;span style=&quot;display: none&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
그리고 &lt;span style=&quot;font-weight: bold;&quot;&gt;태스크 정의 파일&lt;/span&gt;이 필요합니다. 다음과 같은 내용으로 &lt;span style=&quot;font-weight: bold;&quot;&gt;catalina.tasks&lt;/span&gt; 라는 파일을 만듭니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
# catalina tasks properties&lt;br /&gt;
deploy=org.apache.catalina.ant.DeployTask&lt;br /&gt;
undeploy=org.apache.catalina.ant.UndeployTask&lt;br /&gt;
start=org.apache.catalina.ant.StartTask&lt;br /&gt;
reload=org.apache.catalina.ant.ReloadTask&lt;br /&gt;
stop=org.apache.catalina.ant.StopTask&lt;br /&gt;
sessions=org.apache.catalina.ant.SessionsTask&lt;br /&gt;
list=org.apache.catalina.ant.ListTask&lt;br /&gt;
serverinfo=org.apache.catalina.ant.ServerinfoTask&lt;br /&gt;
roles=org.apache.catalina.ant.RolesTask&lt;br /&gt;
resources=org.apache.catalina.ant.ResourcesTask&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
또 &lt;span style=&quot;font-weight: bold;&quot;&gt;어플리케이션 컨텍스트 설정 파일&lt;/span&gt;이 필요합니다. 다음과 같은 내용으로 &lt;span style=&quot;font-weight: bold;&quot;&gt;sample.xml&lt;/span&gt; 이라는 파일을 만듭니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&lt;br /&gt;
&amp;lt;Context path=&quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;/sample&lt;/span&gt;&quot; docBase=&quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;C:\Sample&lt;/span&gt;&lt;sup class=&quot;footnote&quot;&gt;&lt;a id=&quot;footnote_link_28_7&quot; href=&quot;#footnote_28_7&quot; onmouseover=&quot;tistoryFootnote.show(this, 28, 7)&quot; onmouseout=&quot;tistoryFootnote.hide(28, 7)&quot; style=&quot;color: #f9650d; font-family: Verdana, Sans-serif&quot;&gt;&lt;span style=&quot;display: none&quot;&gt;[각주:&lt;/span&gt;7&lt;span style=&quot;display: none&quot;&gt;]&lt;/span&gt;&lt;/a&gt;&lt;/sup&gt;&quot; debug=&quot;0&quot; privileged=&quot;true&quot; reloadable=&quot;true&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Logger className=&quot;org.apache.catalina.logger.FileLogger&quot; prefix=&quot;localhost.sample.&quot; suffix=&quot;.txt&quot; timestamp=&quot;true&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/Context&amp;gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
마지막으로 &lt;span style=&quot;font-weight: bold;&quot;&gt;빌드 파일&lt;/span&gt; 내용은 다음과 같습니다.&lt;br /&gt;
&lt;br /&gt;
먼저 태스크 정의 파일을 설정해야 합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
&amp;lt;taskdef file=&quot;&lt;span style=&quot;font-weight: bold;&quot;&gt;catalina.tasks&lt;/span&gt;&quot; classpath=&quot;${catalina.ant.jar}&quot; /&amp;gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
그러면 다음과 같은 태스크들을 사용할 수 있어요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(193, 193, 193); padding: 10px; background-color: rgb(238, 238, 238);&quot; class=&quot;txc-textbox&quot;&gt;
&amp;lt;target name=&quot;catalina.deploy&quot; description=&quot;Deploy web application&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;deploy&lt;/span&gt; url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; path=&quot;${application.path}&quot; &lt;span style=&quot;font-weight: bold;&quot;&gt;config&lt;/span&gt;=&quot;${application.context}&quot; update=&quot;true&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.undeploy&quot; description=&quot;Undeploy web application&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;undeploy&lt;/span&gt; url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; path=&quot;${application.path}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.start&quot; description=&quot;Start web application&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;start&lt;/span&gt; url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; path=&quot;${application.path}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.reload&quot; description=&quot;Reload web application&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;reload&lt;/span&gt; url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; path=&quot;${application.path}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.stop&quot; description=&quot;Stop web application&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;stop&lt;/span&gt; url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; path=&quot;${application.path}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.sessions&quot; description=&quot;View server information&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;sessions &lt;/span&gt;url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; path=&quot;${application.path}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.list&quot; description=&quot;List web applications&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;list &lt;/span&gt;url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.serverinfo&quot; description=&quot;View server information&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;serverinfo &lt;/span&gt;url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.roles&quot; description=&quot;View server information&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;roles &lt;/span&gt;url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;target name=&quot;catalina.resources&quot; description=&quot;View server information&quot;&amp;gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;resources &lt;/span&gt;url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot; password=&quot;${catalina.manager.user.password}&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/target&amp;gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
디플로이 태스크를 자세히 살펴보죠.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dashed rgb(243, 197, 52); padding: 10px; background-color: rgb(254, 254, 184);&quot; class=&quot;txc-textbox&quot;&gt;
&amp;lt;&lt;span style=&quot;font-weight: bold;&quot;&gt;deploy&lt;/span&gt;
url=&quot;${catalina.manager.url}&quot; username=&quot;${catalina.manager.user.name}&quot;
password=&quot;${catalina.manager.user.password}&quot; path=&quot;${application.path}&quot;
&lt;span style=&quot;font-weight: bold;&quot;&gt;config&lt;/span&gt;=&quot;${application.context}&quot; update=&quot;true&quot; /&amp;gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;config&lt;/span&gt; 속성에 &lt;span style=&quot;text-decoration: underline;&quot;&gt;애플리케이션의 컨텍스트 설정 파일의 위치&lt;/span&gt;를 입력하는데요..&lt;br /&gt;
config 속성 대신에 &lt;span style=&quot;font-weight: bold;&quot;&gt;war&lt;/span&gt; 속성을 써서 애플리케이션 war 파일의 위치를 입력할 수도 있어요.&lt;br /&gt;
두 속성은 반드시 어느 하나만 써야해요. 안 그러면 에러날 걸~?&lt;br /&gt;
&lt;br /&gt;톰캣의 앤트태스크를 이용하면 애플리케이션을 디플로이하는 것 뿐만 아니라 웹 어플리케이션의 목록을 보는 것, 애플리케이션을 실행하거나 중지하는 것 등등의 작업을 앤트로 할 수가 있어요. 이게 다 톰캣 개발자들이 앤트 태스크를 쓰기 좋게 만들어둔 덕분이죠. 감사감사 ^^*&lt;br /&gt;
&lt;br /&gt;보면 볼수록 앤트는 멋진 것 같아요.&lt;br /&gt;
&lt;br /&gt;&lt;div style=&quot;border: 1px dashed rgb(121, 165, 228); padding: 10px; background-color: rgb(219, 232, 251);&quot; class=&quot;txc-textbox&quot;&gt;
환경:&lt;br /&gt;
&lt;div style=&quot;margin-left: 4em;&quot;&gt;Tomcat 5.0 or 5.5&lt;br /&gt;
&lt;/div&gt;&lt;div style=&quot;margin-left: 4em;&quot;&gt;
Ant 1.7.0&lt;br /&gt;
&lt;/div&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;footnotes&quot;&gt;
	&lt;ol class=&quot;footnotes&quot;&gt;
		&lt;li id=&quot;footnote_28_1&quot;&gt;${무언가} 는 변수를 뜻해요! &lt;a href=&quot;#footnote_link_28_1&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id=&quot;footnote_28_2&quot;&gt;톰캣의 설치 경로에요. &lt;a href=&quot;#footnote_link_28_2&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id=&quot;footnote_28_3&quot;&gt;태스크 정의 파일 이름 &lt;a href=&quot;#footnote_link_28_3&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id=&quot;footnote_28_4&quot;&gt;manager 권한이 있는 사용자 이름과 암호 &lt;a href=&quot;#footnote_link_28_4&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id=&quot;footnote_28_5&quot;&gt;샘플 어플리케이션 경로 &lt;a href=&quot;#footnote_link_28_5&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id=&quot;footnote_28_6&quot;&gt;sample 어플리케이션 컨텍스트 파일 이름 &lt;a href=&quot;#footnote_link_28_6&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
		&lt;li id=&quot;footnote_28_7&quot;&gt;샘플 어플리케이션 디플로이 경로 &lt;a href=&quot;#footnote_link_28_7&quot;&gt;[본문으로]&lt;/a&gt;&lt;/li&gt;
	&lt;/ol&gt;
&lt;/div&gt;
</description>
			<category>자동화</category>
			<category>Ant</category>
			<category>deploy</category>
			<category>Tomcat</category>
			<category>tomcat 5.5</category>
			<category>web application</category>
			<category>webapp</category>
			<category>디플로이</category>
			<category>앤트</category>
			<category>웹 애플리케이션</category>
			<category>웹애플리케이션</category>
			<category>톰캣</category>
			<category>톰캣 5.5</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/28</guid>
			<comments>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%97%90%EC%84%9C-%ED%86%B0%EC%BA%A3%EC%97%90-%EC%9B%B9-%EC%95%A0%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%84-%EB%94%94%ED%94%8C%EB%A1%9C%EC%9D%B4%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95#entry28comment</comments>
			<pubDate>Sun, 08 Jun 2008 02:25:16 +0900</pubDate>
		</item>
		<item>
			<title>앤트(Ant)에서 톰캣을 실행/중지해 보아요.</title>
			<link>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%97%90%EC%84%9C-%ED%86%B0%EC%BA%A3%EC%9D%84-%EC%8B%A4%ED%96%89%EC%A4%91%EC%A7%80%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>앤트에서 톰캣을 실행하거나 중지해 보아요.&lt;br /&gt;
&lt;br /&gt;
방법은 간단해요. &amp;lt;java /&amp;gt; 태스크로 &lt;span style=&quot;font-weight: bold;&quot;&gt;org.apache.catalina.startup.Bootstrap&lt;/span&gt; 클래스를 실행하면 돼요.&lt;br /&gt;
다만 프로퍼티 옵션이나 환경 변수 등의 실행 옵션을 잘 주어야 해요.&lt;br /&gt;
&lt;br /&gt;
다음과 같이 해 보아요.&lt;br /&gt;
&lt;br /&gt;
build.properties&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;java_home=C:/Program Files/Java/jdk1.5.0_14
catalina.home=C:/Programz/Tomcat/5.5
catalina.base=C:/Project/Tomcat/Configuration&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;java.home 이라는 프로퍼티가 이미 존재&lt;/span&gt;(자동으로 생성)하기 때문에, &lt;span style=&quot;font-weight: bold;&quot;&gt;java_home&lt;/span&gt; 이라는 이름으로 만들었어요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
build.xml&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;project name=&quot;history&quot; default=&quot;default&quot; basedir=&quot;.&quot;&amp;gt;

	&amp;lt;property file=&quot;build.properties&quot; /&amp;gt;

	&amp;lt;target name=&quot;default&quot;&amp;gt;
		&amp;lt;echo message=&quot;이것은 &#039;Ant Tomcat Container&#039;의 빌드 파일이에요.&quot; /&amp;gt;
		&amp;lt;echo message=&quot;앤트(ant) 1.7.0 버전에 최적화되어 있어요.&quot; /&amp;gt;
		&amp;lt;echo message=&quot;사용법:&quot; /&amp;gt;
		&amp;lt;echo message=&quot;ant tomcat.start&quot; /&amp;gt;
		&amp;lt;echo message=&quot;ant tomcat.stop&quot; /&amp;gt;
		&amp;lt;echo message=&quot;참고:&quot; /&amp;gt;
		&amp;lt;echo message=&quot;java.home = ${java.home}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;java_home = ${java_home}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;catalina.home = ${catalina.home}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;catalina.base = ${catalina.base}&quot; /&amp;gt;
	&amp;lt;/target&amp;gt;

	&amp;lt;target name=&quot;tomcat.start&quot;&amp;gt;
		&amp;lt;java classname=&quot;org.apache.catalina.startup.Bootstrap&quot; jvm=&quot;${java_home}/bin/java&quot; fork=&quot;true&quot; spawn=&quot;true&quot;&amp;gt;
			&amp;lt;classpath&amp;gt;
				&amp;lt;fileset dir=&quot;${catalina.home}/bin&quot;&amp;gt;
					&amp;lt;include name=&quot;bootstrap.jar&quot; /&amp;gt;
				&amp;lt;/fileset&amp;gt;
			&amp;lt;/classpath&amp;gt;
			&amp;lt;arg value=&quot;start&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;catalina.home&quot; value=&quot;${catalina.home}&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.endorsed.dirs&quot; value=&quot;${catalina.home}/common/endorsed&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.util.logging.manager&quot; value=&quot;org.apache.juli.ClassLoaderLogManager&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.util.logging.config.file&quot; value=&quot;${catalina.home}/conf/logging.properties&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;catalina.base&quot; value=&quot;${catalina.base}&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.io.tmpdir&quot; value=&quot;${catalina.base}/temp&quot; /&amp;gt;
		&amp;lt;/java&amp;gt;
	&amp;lt;/target&amp;gt;

	&amp;lt;target name=&quot;tomcat.stop&quot;&amp;gt;
		&amp;lt;java classname=&quot;org.apache.catalina.startup.Bootstrap&quot; jvm=&quot;${java_home}/bin/java&quot; fork=&quot;true&quot; spawn=&quot;true&quot;&amp;gt;
			&amp;lt;classpath&amp;gt;
				&amp;lt;fileset dir=&quot;${catalina.home}/bin&quot;&amp;gt;
					&amp;lt;include name=&quot;bootstrap.jar&quot; /&amp;gt;
				&amp;lt;/fileset&amp;gt;
			&amp;lt;/classpath&amp;gt;
			&amp;lt;arg value=&quot;stop&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;catalina.base&quot; value=&quot;${catalina.home}&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;catalina.home&quot; value=&quot;${catalina.home}&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.endorsed.dirs&quot; value=&quot;${catalina.home}/common/endorsed&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.util.logging.manager&quot; value=&quot;org.apache.juli.ClassLoaderLogManager&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.util.logging.config.file&quot; value=&quot;${catalina.home}/conf/logging.properties&quot; /&amp;gt;
			&amp;lt;sysproperty key=&quot;java.io.tmpdir&quot; value=&quot;${catalina.home}/temp&quot; /&amp;gt;
		&amp;lt;/java&amp;gt;
	&amp;lt;/target&amp;gt;

&amp;lt;/project&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
톰캣은 JRE가 아니라 &lt;span style=&quot;text-decoration: underline;&quot;&gt;JDK로 실행시켜야&lt;/span&gt; 하기 때문에 &amp;lt;java /&amp;gt; 태스크의 &lt;span style=&quot;font-weight: bold;&quot;&gt;jvm 속성&lt;/span&gt;으로 JDK의 java를 지정했어요.&lt;br /&gt;
그리고 &lt;span style=&quot;text-decoration: underline;&quot;&gt;새로운 JVM에서 실행&lt;/span&gt;이 되도록 &lt;span style=&quot;font-weight: bold;&quot;&gt;fork 속성&lt;/span&gt;을, &lt;span style=&quot;text-decoration: underline;&quot;&gt;앤트의 JVM이 종료되더라도 톰캣의 JVM이 계속 남아 있게&lt;/span&gt; 하기 위해서 &lt;span style=&quot;font-weight: bold;&quot;&gt;spawn 속성&lt;/span&gt;을 true로 지정했어요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Ant 1.7.0&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Tomcat 5.0 or 5.5&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>자동화</category>
			<category>Ant</category>
			<category>Tomcat</category>
			<category>tomcat 5.0</category>
			<category>tomcat 5.5</category>
			<category>실행/중지</category>
			<category>앤트</category>
			<category>톰캣</category>
			<category>톰캣 5.0</category>
			<category>톰캣 5.5</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/27</guid>
			<comments>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%97%90%EC%84%9C-%ED%86%B0%EC%BA%A3%EC%9D%84-%EC%8B%A4%ED%96%89%EC%A4%91%EC%A7%80%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94#entry27comment</comments>
			<pubDate>Sun, 08 Jun 2008 01:28:39 +0900</pubDate>
		</item>
		<item>
			<title>앤트(Ant)의 프로퍼티 파일(.properties)의 제한에 대해서..</title>
			<link>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%9D%98-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-%ED%8C%8C%EC%9D%BCproperties%EC%9D%98-%EC%A0%9C%ED%95%9C%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;디렉토리 구분자의 제한&lt;/span&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
Ant에서는 경로를 나타낼 때, 디렉토리 구분자로 &#039;&lt;span style=&quot;font-weight: bold;&quot;&gt;/&lt;/span&gt;&#039;와 &#039;&lt;span style=&quot;font-weight: bold;&quot;&gt;\&lt;/span&gt;&#039;를 모두 사용할 수 있어요.&lt;br /&gt;
&lt;blockquote&gt;Ant는 두 가지 슬래시 모두를 사용한다고 해서 부끄러워하지 않으며, 오히려 그것을 자랑스럽게 생각한다.&lt;br /&gt;
&lt;div style=&quot;text-align: right;&quot;&gt;
- 자바의 또 다른 멋진 도구 Ant&lt;br /&gt;
&lt;/div&gt;
&lt;/blockquote&gt;&lt;div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
그러나 &lt;b&gt;&lt;u&gt;프로퍼티 파일에서 경로를 지정&lt;/u&gt;&lt;/b&gt;&lt;u&gt;할 때 &#039;\&#039;를 사용하고 싶으면, &#039;&lt;/u&gt;&lt;b&gt;&lt;u&gt;\\&lt;/u&gt;&lt;/b&gt;&lt;u&gt;&#039;로 써야&lt;/u&gt;해요.&lt;br /&gt;
왜냐하면 자바에서는 &#039;\&#039; 문자를 이스케이프 문자로 취급하기 때문이지요.&amp;nbsp;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;프로퍼티 파일 간 참조의 제한&lt;/span&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
Ant의 프로퍼티는 &lt;span style=&quot;text-decoration: underline;&quot;&gt;전방참조&lt;/span&gt;(forward-reference)와 &lt;span style=&quot;text-decoration: underline;&quot;&gt;후방참조&lt;/span&gt;(backward-reference)가 모두 가능하죠.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
&amp;lt;property file=&quot;first.properties&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;property file=&quot;second.properties&quot; /&amp;gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
그러나 위와 같이 프로퍼티 파일을 2개 사용할 때, &lt;span style=&quot;text-decoration: underline;&quot;&gt;첫번째 프로퍼티 파일에서 두번째 프로퍼티 파일에 존재하는 프로퍼티는 접근할 수 없어요&lt;/span&gt;(전방참조 불가).&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
그러므로 &lt;b&gt;단일 파일에서만 전방 참조&lt;/b&gt;가 가능한 것이죠.
&lt;/div&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
build.properties&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;# common build properties

net=./net
net.kjunine=${net}/kjunine

net.other=.\\net
net.kjunine.other=${net.other}\\kjunine&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
first.properties&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;# first properties file

first=first
first.second=${first}.${second}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
second.properties&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;# second properties file

second=second
second.first=${second}.${first}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
build.xml&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;project name=&quot;Ant Project&quot; default=&quot;default&quot; basedir=&quot;.&quot;&amp;gt;

	&amp;lt;!-- START: PROPERTY --&amp;gt;
	&amp;lt;property file=&quot;build.properties&quot; /&amp;gt;
	&amp;lt;property file=&quot;first.properties&quot; /&amp;gt;
	&amp;lt;property file=&quot;second.properties&quot; /&amp;gt;
	&amp;lt;!-- END: PROPERTY --&amp;gt;

	&amp;lt;!-- START: DEFAULT --&amp;gt;
	&amp;lt;target name=&quot;default&quot;&amp;gt;
		&amp;lt;echo message=&quot;이것은 &#039;Ant Property PropertiesFile&#039;의 빌드 파일이에요.&quot; /&amp;gt;
		&amp;lt;echo message=&quot;앤트(ant) 1.7.0 버전에 최적화되어 있어요.&quot; /&amp;gt;
		&amp;lt;echo message=&quot;사용법:&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant directorydelimiter&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant betweenproperties&quot; /&amp;gt;
	&amp;lt;/target&amp;gt;
	&amp;lt;!-- END: DEFAULT --&amp;gt;

	&amp;lt;!-- START: DIRECTORY DELIMITER--&amp;gt;
	&amp;lt;target name=&quot;directorydelimiter&quot;&amp;gt;
		&amp;lt;echo message=&quot;net.kjunine = ${net.kjunine}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;net.kjunine.other = ${net.kjunine.other}&quot; /&amp;gt;
		&amp;lt;mkdir dir=&quot;${net.kjunine}&quot; /&amp;gt;
		&amp;lt;delete dir=&quot;${net}&quot; /&amp;gt;
		&amp;lt;touch file=&quot;${net.kjunine.other}&quot; mkdirs=&quot;true&quot; /&amp;gt;
		&amp;lt;delete dir=&quot;${net}&quot; /&amp;gt;
	&amp;lt;/target&amp;gt;
	&amp;lt;!-- END: DIRECTORY DELIMITER --&amp;gt;

	&amp;lt;!-- START: BETWEEN PROPERTIES--&amp;gt;
	&amp;lt;target name=&quot;betweenproperties&quot;&amp;gt;
		&amp;lt;echo message=&quot;first = ${first}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;second = ${second}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;first.second = ${first.second}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;second.first = ${second.first}&quot; /&amp;gt;
	&amp;lt;/target&amp;gt;
	&amp;lt;!-- END: BETWEEN PROPERTIES --&amp;gt;

&amp;lt;/project&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
사용법:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
default:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] 이것은 &#039;Ant Property PropertiesFile&#039;의 빌드 파일이에요.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] 앤트(ant) 1.7.0 버전에 최적화되어 있어요.&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] 사용법:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo]&amp;nbsp; ant directorydelimiter&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo]&amp;nbsp; ant betweenproperties&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
디렉토리 구분자 예제:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant directorydelimiter&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
directorydelimiter:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] net.kjunine = ./net/kjunine&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] net.kjunine.other = .\net\kjunine&lt;br /&gt;
&amp;nbsp; &amp;nbsp; [mkdir] Created dir: C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net\kjunine&lt;br /&gt;
&amp;nbsp;&amp;nbsp; [delete] Deleting directory C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net&lt;br /&gt;
&amp;nbsp; &amp;nbsp; [touch] Creating C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net\kjunine&lt;br /&gt;
&amp;nbsp;&amp;nbsp; [delete] Deleting directory C:\Workspace\Project\Workspace\AntExample\Property\PropertiesFile\net&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
프로퍼티 파일 간 참조 예제:&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant betweenproperties&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
betweenproperties:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] first = first&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] second = second&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] first.second = first.${second}&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] second.first = second.first&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Ant 1.7.0&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>자동화</category>
			<category>Ant</category>
			<category>directory delimiter</category>
			<category>forward reference</category>
			<category>Properties</category>
			<category>property</category>
			<category>디렉토리 구분자</category>
			<category>앤트</category>
			<category>전방참조</category>
			<category>프로퍼티</category>
			<category>프로퍼티 파일</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/26</guid>
			<comments>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%9D%98-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-%ED%8C%8C%EC%9D%BCproperties%EC%9D%98-%EC%A0%9C%ED%95%9C%EC%97%90-%EB%8C%80%ED%95%B4%EC%84%9C#entry26comment</comments>
			<pubDate>Sun, 08 Jun 2008 00:13:31 +0900</pubDate>
		</item>
		<item>
			<title>앤트(Ant)에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해보아요.</title>
			<link>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%EC%9E%90%EB%B3%84%EB%A1%9C-%EB%8B%A4%EB%A5%B8-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%9D%BD%EC%96%B4%EB%93%A4%EC%9D%B4%EB%8F%84%EB%A1%9D-%ED%95%B4%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>앤트에서 사용자별로 다른 프로퍼티 파일을 읽어들이도록 해 보아요.&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(159, 211, 49); border-right-color: rgb(159, 211, 49); border-bottom-color: rgb(159, 211, 49); border-left-color: rgb(159, 211, 49); background-color: rgb(231, 253, 181); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
쉽게 생각하면 -propertyfile 옵션을 이용하면 될 것 같지요.&lt;br /&gt;
하지만 &lt;span style=&quot;text-decoration: underline;&quot;&gt;-propertyfile 옵션을 이용해 .properties 파일을 읽어들이면 &lt;/span&gt;&lt;a style=&quot;text-decoration: underline; font-weight: bold;&quot; href=&quot;http://kjunine.net/24&quot; target=&quot;_blank&quot;&gt;심각한 문제&lt;/a&gt;가 있어요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
그래서 다음과 같이 하면 돼요.&lt;div&gt;
&lt;br /&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(255, 255, 190); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
default.user.properties&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;# default user properties
user.properties=default.user.properties&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
user1.properties&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;# user1 properties
user.properties=user1.properties&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
user2.properties&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;# user2 properties
user.properties=user2.properties&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
build.xml&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;project name=&quot;Ant Project&quot; default=&quot;default&quot; basedir=&quot;.&quot;&amp;gt;

	&amp;lt;!-- START: PROPERTY --&amp;gt;
	&amp;lt;property file=&quot;${user.id}.properties&quot; /&amp;gt;
	&amp;lt;property file=&quot;default.user.properties&quot; /&amp;gt;
	&amp;lt;!-- END: PROPERTY --&amp;gt;

	&amp;lt;!-- START: DEFAULT --&amp;gt;
	&amp;lt;target name=&quot;default&quot;&amp;gt;
		&amp;lt;echo message=&quot;이것은 &#039;Ant Project&#039;의 빌드 파일이에요.&quot; /&amp;gt;
		&amp;lt;echo message=&quot;앤트(ant) 1.7.0 버전에 최적화되어 있어요.&quot; /&amp;gt;
		&amp;lt;echo message=&quot;사용법:&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant userdependant&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant -Duser.id=user1 userdependant&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant -Duser.id=user2 userdependant&quot; /&amp;gt;
	&amp;lt;/target&amp;gt;
	&amp;lt;!-- END: DEFAULT --&amp;gt;

	&amp;lt;!-- START: USER DEPENDANT--&amp;gt;
	&amp;lt;target name=&quot;userdependant&quot;&amp;gt;
		&amp;lt;echo message=&quot;user.id = ${user.id}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;user.properties = ${user.properties}&quot; /&amp;gt;
	&amp;lt;/target&amp;gt;
	&amp;lt;!-- END: USER DEPENDANT --&amp;gt;

&amp;lt;/project&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
사용법을 볼까요?&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
default:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] 사용법:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo]&amp;nbsp; ant userdependant&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo]&amp;nbsp; ant -Duser.id=user1 userdependant&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo]&amp;nbsp; ant -Duser.id=user2 userdependant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
디폴트 사용자일 때..&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant userdependant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
userdependant:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] user.id = ${user.id}&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] user.properties = default.user.properties&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;user.id 프로퍼티가 없으면&lt;/span&gt; build.xml에서 ${user.id}.properties 파일을 읽는 property 태스크는 무시되어요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
사용자 1일 때..&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant &lt;span style=&quot;font-weight: bold;&quot;&gt;-Duser.id=user1&lt;/span&gt; userdependant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
userdependant:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] user.id = user1&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] user.properties = user1.properties&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
사용자 2일 때..&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant &lt;span style=&quot;font-weight: bold;&quot;&gt;-Duser.id=user2&lt;/span&gt; userdependant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
userdependant:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] user.id = user2&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] user.properties = user2.properties&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
위와 같이 하면 &lt;span style=&quot;font-weight: bold;&quot;&gt;사용자마다 다른 프로퍼티 파일&lt;/span&gt;을 읽을 수 있겠네요.&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;사용자마다 작업 디렉토리나 서버 설치 디렉토리가 다른 경우 등등&lt;/span&gt;에 적용할 수 있을 것 같아요.&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Ant 1.7.0&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>자동화</category>
			<category>Ant</category>
			<category>Properties</category>
			<category>property</category>
			<category>User</category>
			<category>사용자</category>
			<category>앤트</category>
			<category>프로퍼티</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/25</guid>
			<comments>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%97%90%EC%84%9C-%EC%82%AC%EC%9A%A9%EC%9E%90%EB%B3%84%EB%A1%9C-%EB%8B%A4%EB%A5%B8-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-%ED%8C%8C%EC%9D%BC%EC%9D%84-%EC%9D%BD%EC%96%B4%EB%93%A4%EC%9D%B4%EB%8F%84%EB%A1%9D-%ED%95%B4%EB%B3%B4%EC%95%84%EC%9A%94#entry25comment</comments>
			<pubDate>Wed, 04 Jun 2008 02:05:42 +0900</pubDate>
		</item>
		<item>
			<title>앤트(Ant)의 명령행에서 정의되는 프로퍼티의 제한에 대하여..</title>
			<link>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%9D%98-%EB%AA%85%EB%A0%B9%ED%96%89%EC%97%90%EC%84%9C-%EC%A0%95%EC%9D%98%EB%90%98%EB%8A%94-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0%EC%9D%98-%EC%A0%9C%ED%95%9C%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC</link>
			<description>&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(227, 143, 188); padding: 10px; background-color: rgb(255, 228, 244);&quot;&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;명령행에서 정의되는 프로퍼티에서는 &lt;span style=&quot;font-weight: bold;&quot;&gt;프로퍼티 중첩&lt;/span&gt;을 사용할 수 없어요.&lt;/span&gt;&lt;br /&gt;
다시 말하면, 명령행에서 프로퍼티를 정의할 때는 다른 프로퍼티를 이용할 수가 없어요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
즉, 이런 것을 못한다는 말이죠.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
net.kjunine=net.kjunine&lt;br /&gt;
net.kjunine.ant=&lt;span style=&quot;font-weight: bold;&quot;&gt;${net.kjunine}&lt;/span&gt;.ant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
프로퍼티 참조를 뜻하는 &lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;${..}&lt;/span&gt; 구문이 단순한 문자열로 인식&lt;/span&gt;되어요.&lt;br /&gt;
&lt;br /&gt;
참고로 명령행에서 프로퍼티를 정의하려면 &lt;span style=&quot;font-weight: bold;&quot;&gt;-D 옵션이나 -propertyfile 옵션&lt;/span&gt;을 사용하면 되요.&lt;div&gt;
&lt;br /&gt;&lt;div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div class=&quot;txc-textbox&quot; style=&quot;border-top-style: dashed; border-right-style: dashed; border-bottom-style: dashed; border-left-style: dashed; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-color: rgb(243, 197, 52); border-right-color: rgb(243, 197, 52); border-bottom-color: rgb(243, 197, 52); border-left-color: rgb(243, 197, 52); background-color: rgb(254, 254, 184); padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px; &quot;&gt;
build.properties 파일:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: perl&quot;&gt;# common build properties
a=a
b=b
c=${a}+${b}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
build.xml 파일:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;project name=&quot;Ant Property CommandLine&quot; default=&quot;default&quot; basedir=&quot;.&quot;&amp;gt;

	&amp;lt;!-- START: PROPERTY --&amp;gt;
	&amp;lt;property file=&quot;build.properties&quot; /&amp;gt;
	&amp;lt;!-- END: PROPERTY --&amp;gt;

	&amp;lt;!-- START: DEFAULT --&amp;gt;
	&amp;lt;target name=&quot;default&quot;&amp;gt;
		&amp;lt;echo message=&quot;사용법:&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant -Da=a -Db=b -Dc=$${a}+$${b} commandline&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant -propertyfile=build.properties commandline&quot; /&amp;gt;
		&amp;lt;echo message=&quot;	ant commandline&quot; /&amp;gt;
	&amp;lt;/target&amp;gt;
	&amp;lt;!-- END: DEFAULT --&amp;gt;

	&amp;lt;!-- START: COMMAND LINE --&amp;gt;
	&amp;lt;target name=&quot;commandline&quot;&amp;gt;
		&amp;lt;echo message=&quot;a = ${a}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;b = ${b}&quot; /&amp;gt;
		&amp;lt;echo message=&quot;c = ${c}&quot; /&amp;gt;
	&amp;lt;/target /&amp;gt;
	&amp;lt;!-- END: COMMAND LINE --&amp;gt;

&amp;lt;/project&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
사용법을 보죠.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
default:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] 사용법:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] &amp;nbsp; ant -Da=a -Db=b -Dc=${a}+${b} commandline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] &amp;nbsp; ant -propertyfile=build.properties commandline&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] &amp;nbsp; ant commandline&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
다음과 같이 각각 실행하고 결과를 보세요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant &lt;span style=&quot;font-weight: bold;&quot;&gt;-Da=a -Db=b -Dc=${a}+${b}&lt;/span&gt; commandline&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
commandline:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] a = a&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] b = b&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] c = &lt;span style=&quot;font-weight: bold;&quot;&gt;${a}+${b}&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant &lt;span style=&quot;font-weight: bold;&quot;&gt;-propertyfile=build.properties&lt;/span&gt; commandline&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
commandline:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] a = a&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] b = b&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] c = &lt;span style=&quot;font-weight: bold;&quot;&gt;${a}+${b}&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
ant commandline&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(180, 153, 126); padding: 10px; background-color: rgb(230, 216, 201);&quot;&gt;
commandline:&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] a = a&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] b = b&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&amp;nbsp; [echo] c = a+b&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
&amp;lt;property&amp;gt; 태스크가 프로퍼티를 읽어들이기 전에 &lt;span style=&quot;font-weight: bold;&quot;&gt;-D 옵션이나 -propertyfile 옵션으로&lt;/span&gt; 프로퍼티를 읽어들이면, c 프로퍼티의 내용이 &lt;span style=&quot;text-decoration: underline;&quot;&gt;문자열 그대로&lt;/span&gt; 보이는 것을 알 수 있어요.&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Ant 1.7.0&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
			<category>자동화</category>
			<category>Ant</category>
			<category>command line</category>
			<category>command line option</category>
			<category>Properties</category>
			<category>property</category>
			<category>propertyfile</category>
			<category>명령행</category>
			<category>명령행 옵션</category>
			<category>앤트</category>
			<category>프로퍼티</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/24</guid>
			<comments>http://kjunine.net/entry/%EC%95%A4%ED%8A%B8Ant%EC%9D%98-%EB%AA%85%EB%A0%B9%ED%96%89%EC%97%90%EC%84%9C-%EC%A0%95%EC%9D%98%EB%90%98%EB%8A%94-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0%EC%9D%98-%EC%A0%9C%ED%95%9C%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC#entry24comment</comments>
			<pubDate>Wed, 04 Jun 2008 01:14:00 +0900</pubDate>
		</item>
		<item>
			<title>우분투 8.04에서 톰캣을 설치해 보아요.</title>
			<link>http://kjunine.net/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-804%EC%97%90%EC%84%9C-%ED%86%B0%EC%BA%A3%EC%9D%84-%EC%84%A4%EC%B9%98%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;자바부터 설치해야죠.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
오픈 소스 기반인 OpenJDK를 한번 써보아요.&lt;br /&gt;
JDK 6.0 버전이기는 한데.. 나중에 잘 안 되면 sun 자바로 바꾸면 되죠. ^^&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo apt-get install &lt;span style=&quot;font-weight: bold;&quot;&gt;openjdk-6-jdk&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
오오.. &lt;span style=&quot;font-weight: bold;&quot;&gt;앤트(ant)&lt;/span&gt;까지 깔리는군요. +_+&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;톰캣 5.5를 설치해 보아요.&lt;/span&gt;&lt;br style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
JAVA_HOME 환경변수가 필요하네요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
다음 패키지들을 설치하면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo apt-get install &lt;span style=&quot;font-weight: bold;&quot;&gt;tomcat5.5 tomcat5.5-admin tomcat5.5-webapps&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
만약 다음과 같은 메시지가 중간에 나오면서 에러가 나면..&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(227, 143, 188); padding: 10px; background-color: rgb(255, 228, 244);&quot;&gt;
&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;*&lt;/span&gt; no JDK found - please set &lt;span style=&quot;text-decoration: underline;&quot;&gt;JAVA_HOME&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
이렇게 해야 해요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo &lt;span style=&quot;font-weight: bold;&quot;&gt;-E&lt;/span&gt; apt-get install tomcat5.5 tomcat5.5-admin tomcat5.5-webapps&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;-E 옵션&lt;/span&gt;을 사용하면 현재 쉘의 환경변수를 넘겨주네요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
톰캣이 시작될 때에도 JAVA_HOME 환경변수가 필요하므로, 실행스크립트를 수정해야 해요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
vi /etc/init.d/tomcat5.5&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
앞부분에 다음 라인을 추가하면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
JAVA_HOME=/usr/lib/jvm/java-6-openjdk/&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;아파치 2.2와 톰캣을 연동해 보자.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
우선 아파치 2.2의 mod_jk 모듈부터 설치해야 해요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo apt-get install &lt;span style=&quot;font-weight: bold;&quot;&gt;libapache2-mod-jk&lt;/span&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
mod_jk의 설정 파일을 만들어 주어야 해요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo vi /etc/apache2/mods-available/jk.conf&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;ifmodule jk_module&amp;gt;
	JkWorkersFile /etc/apache2/jk/workers.properties
	JkShmFile /var/log/apache2/jk.shm
	JkLogFile /var/log/apache2/jk.log
	JkLogLevel info
	JkLogStampFormat &quot;[%a %b %d %H:%M:%S %Y]&quot;
	JkRequestLogFormat &quot;%w %V %T&quot;
&amp;lt;/ifmodule&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
mod_jk의 worker 설정 파일도 만들어 주어요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo mkdir /etc/apache2/jk&lt;br /&gt;
sudo vi /etc/apache2/jk/workers.properties&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
다음 내용을 넣어 주어요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
worker.list=&lt;span style=&quot;font-weight: bold;&quot;&gt;worker1&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
worker.worker1.type=ajp13&lt;br /&gt;
worker.worker1.host=localhost&lt;br /&gt;
worker.worker1.port=8009&lt;br /&gt;
worker.worker1.lbfactor=50&lt;br /&gt;
worker.worker1.socket_keepalive=1&lt;br /&gt;
worker.worker1.socket_timeout=300&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
mod_jk 설정 파일과 worker의 이름이 같아야 해요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
mod_jk 모듈을 사용 가능하게 해 주어야 해요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo a2enmod jk&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
혹시 이미 mod_jk 모듈이 사용 가능한 상태라면 다음과 같이 해줘야 해요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo a2dismod jk&lt;br /&gt;
sudo a2enmod jk&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
아파치 설정도 수정해야겠죠.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo vi /etc/apache2/sites-available/ssl&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
/etc/apache2/sites-available/ssl은 기존에 존재하지 않는 파일이에요.&lt;br /&gt;
저는 모든 접속을 &lt;span style=&quot;text-decoration: underline;&quot;&gt;https://로 접근하게 하려고&lt;/span&gt; ssl 사이트를 따로 만들어 주었어요.&lt;br /&gt;
아파치 설정에 의문점이 있다면 &quot;&lt;a href=&quot;http://kjunine.net/6&quot; target=&quot;_blank&quot;&gt;우분투 8.04에서 아파치 2.2를 설치해 보아요.&lt;/a&gt;&quot;를 참고하세요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
다음 내용을 적당한 곳에 추가해 주어요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;ifmodule jk_module&amp;gt;
	DocumentRoot /usr/share/tomcat5.5-webapps/ROOT/
	
	&amp;lt;directory /usr/share/tomcat5.5-webapps/root&amp;gt;
		AllowOverride None
		Order allow,deny
		allow from all
	&amp;lt;/directory&amp;gt;
	
	JkMount / worker1
	JkMount /index.jsp worker1
	JkMount /manager/* worker1
	JkUnMount /*.gif worker1
	JkUnMount /*.jpg worker1
	JkUnMount /*.png worker1
	JkUnMount /*.xml worker1
	JkUnMount /*.xsd worker1
	JkUnMount /*.xsl worker1
	
	Alias /manager &quot;/usr/share/tomcat5.5/server/webapps/manager&quot;
	Alias /tomcat-docs &quot;/usr/share/tomcat5.5-webapps/tomcat-docs&quot;
	
	&amp;lt;directory /usr/share/tomcat5.5/server/webapps/manager&amp;gt;
		AllowOverride None
		Order allow,deny
		Allow from all
	&amp;lt;/directory&amp;gt;
	
	&amp;lt;directory /usr/share/tomcat5.5-webapps/tomcat-docs&amp;gt;
		AllowOverride None
		Order allow,deny
		Allow from all
	&amp;lt;/directory&amp;gt;
&amp;lt;/ifmodule&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
DocumentRoot가 이미 선언되어 있으면 그 뒤에 붙여넣어야 제대로 동작하겠죠?&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
그리고 &lt;span style=&quot;text-decoration: underline;&quot;&gt;ROOT 웹 어플리케이션&lt;/span&gt;을 연결해 주기위해 &lt;span style=&quot;font-weight: bold;&quot;&gt;&quot;/&quot;&lt;/span&gt; 와 &lt;span style=&quot;font-weight: bold;&quot;&gt;&quot;/index.jsp&quot;&lt;/span&gt; 에 대해서도 설정해 주었는데요.. ROOT 웹 어플리케이션의 내용이 바뀌게 되면 바꿔주어야 할 것 같아요. 임시방편일 뿐이죠.&lt;br /&gt;
&lt;br /&gt;
결국 &lt;span style=&quot;text-decoration: underline;&quot;&gt;왠만하면 / 디렉토리는 톰캣으로 넘기지 않는 것&lt;/span&gt;이 상책인 것 같아요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
톰캣과 아파치를 재시작해 주면 끝이에요. ^^&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;
sudo /etc/init.d/tomcat5.5 restart&lt;br /&gt;
sudo apache2ctl restart&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
아직 아파치와 mod_jk에 대하여 자세하게 알지 못해서 미흡하네요.&lt;br /&gt;
앞으로 천천히 내용을 보강해 나가야 겠어요.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Ubuntu 8.04 Hardy Heron Server Edition - x86&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(128, 184, 136); padding: 10px; background-color: rgb(202, 238, 206);&quot;&gt;
참고:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;https://help.ubuntu.com/community/ApacheTomcat5&quot; target=&quot;_blank&quot;&gt;Ubuntu Community Document -ApacheTomcat5&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://duddns.springnote.com/pages/422280&quot; target=&quot;_blank&quot;&gt;ubuntu + apm + tomcat + eclipse&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://kldp.org/node/53583&quot; target=&quot;_blank&quot;&gt;ubuntu에서 tomcat설치/apache2에 연동&lt;/a&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://tomcat.apache.org/connectors-doc/generic_howto/quick.html&quot; target=&quot;_blank&quot;&gt;The Apache Tomcat Connector - Generic HowTo&lt;/a&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>서버</category>
			<category>8.04</category>
			<category>Ant</category>
			<category>env</category>
			<category>Java</category>
			<category>JAVA_HOME</category>
			<category>jdk 6.0</category>
			<category>Linux</category>
			<category>mod_jk</category>
			<category>openjdk</category>
			<category>sudo</category>
			<category>Tomcat</category>
			<category>tomcat 5.5</category>
			<category>ubuntu</category>
			<category>Ubuntu 8.04</category>
			<category>리눅스</category>
			<category>아파치</category>
			<category>아파치2.2</category>
			<category>앤트</category>
			<category>우분투</category>
			<category>우분투 8.04</category>
			<category>자바</category>
			<category>톰캣</category>
			<category>톰캣 5.5</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/23</guid>
			<comments>http://kjunine.net/entry/%EC%9A%B0%EB%B6%84%ED%88%AC-804%EC%97%90%EC%84%9C-%ED%86%B0%EC%BA%A3%EC%9D%84-%EC%84%A4%EC%B9%98%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94#entry23comment</comments>
			<pubDate>Tue, 27 May 2008 00:41:08 +0900</pubDate>
		</item>
		<item>
			<title>아이바티스(iBatis)에서 자동 증가하는 필드를 사용해 보아요.</title>
			<link>http://kjunine.net/entry/%EC%95%84%EC%9D%B4%EB%B0%94%ED%8B%B0%EC%8A%A4iBatis%EC%97%90%EC%84%9C-%EC%9E%90%EB%8F%99-%EC%A6%9D%EA%B0%80%ED%95%98%EB%8A%94-%ED%95%84%EB%93%9C%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>iBatis에서 숫자로 된 ID와 같이 1씩 증가하는 필드를 사용하는 방법이에요.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;MySQL &lt;/span&gt;- &lt;span style=&quot;text-decoration: underline;&quot;&gt;AUTO_INCREMENT 필드&lt;/span&gt;를 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;insert id=&quot;insertEvent&quot; parameterclass=&quot;event&quot;&amp;gt;
	&amp;lt;![CDATA[
		insert into event ( type, extension ) values ( #type#, #extension# )
	]]&amp;gt; 
	&amp;lt;selectkey resultclass=&quot;long&quot; keyproperty=&quot;id&quot;&amp;gt;
		&amp;lt;![CDATA[
			select last_insert_id() as id
		]]&amp;gt;
	&amp;lt;/selectkey&amp;gt;
&amp;lt;/insert&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;Oracle &lt;/span&gt;- &lt;span style=&quot;text-decoration: underline;&quot;&gt;Sequence 오브젝트&lt;/span&gt;를 사용합니다.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;insert id=&quot;capture&quot; parameterclass=&quot;event&quot;&amp;gt;
	&amp;lt;selectkey resultclass=&quot;long&quot; keyproperty=&quot;id&quot;&amp;gt;
		&amp;lt;![CDATA[
			select event_seq.nextval from dual
		]]&amp;gt;
	&amp;lt;/selectkey&amp;gt;
	&amp;lt;![CDATA[
		insert into event ( type, id, extension ) values ( #type#, #id#, #extension# )
	]]&amp;gt;
&amp;lt;/insert&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
이전에 작성해 놓고 새로 테스트를 안 해봐서 잘 될지 잘 모르겠네요.&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>기타</category>
			<category>iBATIS</category>
			<category>mysql</category>
			<category>Oracle</category>
			<category>Sequence</category>
			<category>마이에스큐엘</category>
			<category>시퀀스</category>
			<category>아이바티스</category>
			<category>오라클</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/22</guid>
			<comments>http://kjunine.net/entry/%EC%95%84%EC%9D%B4%EB%B0%94%ED%8B%B0%EC%8A%A4iBatis%EC%97%90%EC%84%9C-%EC%9E%90%EB%8F%99-%EC%A6%9D%EA%B0%80%ED%95%98%EB%8A%94-%ED%95%84%EB%93%9C%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94#entry22comment</comments>
			<pubDate>Mon, 26 May 2008 10:10:16 +0900</pubDate>
		</item>
		<item>
			<title>오라클(Oracle)에서 삭제된 오브젝트들이 아직 남아있다면..</title>
			<link>http://kjunine.net/entry/%EC%98%A4%EB%9D%BC%ED%81%B4Oracle%EC%97%90%EC%84%9C-%EC%82%AD%EC%A0%9C%EB%90%9C-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8%EB%93%A4%EC%9D%B4-%EC%95%84%EC%A7%81-%EB%82%A8%EC%95%84%EC%9E%88%EB%8B%A4%EB%A9%B4</link>
			<description>오라클(Oracle)에서 테이블&amp;nbsp; 삭제 후 쓰레기 값이 남는다면..&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;purge recyclebin;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;으로 없앨 수 있다.&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;환경:&lt;br /&gt;&amp;nbsp; &amp;nbsp; Oracle 8i 이상 (maybe..)&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
			<category>기타</category>
			<category>Oracle</category>
			<category>purge</category>
			<category>오라클</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/21</guid>
			<comments>http://kjunine.net/entry/%EC%98%A4%EB%9D%BC%ED%81%B4Oracle%EC%97%90%EC%84%9C-%EC%82%AD%EC%A0%9C%EB%90%9C-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8%EB%93%A4%EC%9D%B4-%EC%95%84%EC%A7%81-%EB%82%A8%EC%95%84%EC%9E%88%EB%8B%A4%EB%A9%B4#entry21comment</comments>
			<pubDate>Mon, 26 May 2008 10:01:19 +0900</pubDate>
		</item>
		<item>
			<title>스프링(Spring)으로 스태틱(static) 멤버 변수를 설정해 보아요.</title>
			<link>http://kjunine.net/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring%EC%9C%BC%EB%A1%9C-%EC%8A%A4%ED%83%9C%ED%8B%B1static-%EB%A9%A4%EB%B2%84-%EB%B3%80%EC%88%98%EB%A5%BC-%EC%84%A4%EC%A0%95%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>다음과 같은 자바 클래스가 있어요.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;text-decoration: underline;&quot;&gt;생성자가 &lt;/span&gt;&lt;span style=&quot;font-weight: bold; color: rgb(255, 0, 0); text-decoration: underline;&quot;&gt;private&lt;/span&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;임&lt;/span&gt;을 잘 봐주세요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: java&quot;&gt;package net.kjunine.blog.common.util ;

import net.kjunine.blog.biz.BlogIF ;

public class ServiceLocator {

	private static BlogIF blog ;

	private ServiceLocator() {
	}

	public static BlogIF service() {
		return blog ;
	}

	public BlogIF getBlog() {
		return blog ;
	}

	public void setBlog(BlogIF blog) {
		ServiceLocator.blog = blog ;
	}

}&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
스프링 설정 파일에는 다음과 같이 작성해요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;bean id=&quot;serviceLocator&quot; class=&quot;net.kjunine.blog.common.util.ServiceLocator&quot;&amp;gt;
	&amp;lt;property name=&quot;blog&quot; ref=&quot;blog&quot; /&amp;gt;
&amp;lt;/bean&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
신기하게도 스프링은 생성자가 private 이더라도 Bean을 생성할 수 있어요.&lt;br /&gt;
&lt;br /&gt;
어떻게? ㅋ (자바 리플렉션으로 이렇게까지 할 수 있는 걸까요?)&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
아무튼 이런 곳에서 스프링의 위력이 드러나는군요..&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Spring 1.x, 2.0, 2.5 (사실 2.5에서는 테스트해보지 않았음.)&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>스프링</category>
			<category>Java</category>
			<category>private</category>
			<category>reflection</category>
			<category>spring</category>
			<category>Static</category>
			<category>리플렉션</category>
			<category>스프링</category>
			<category>자바</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/20</guid>
			<comments>http://kjunine.net/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring%EC%9C%BC%EB%A1%9C-%EC%8A%A4%ED%83%9C%ED%8B%B1static-%EB%A9%A4%EB%B2%84-%EB%B3%80%EC%88%98%EB%A5%BC-%EC%84%A4%EC%A0%95%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94#entry20comment</comments>
			<pubDate>Mon, 26 May 2008 09:49:28 +0900</pubDate>
		</item>
		<item>
			<title>스프링(Spring)에서 프로퍼티 파일(.properties)을 사용해 보아요.</title>
			<link>http://kjunine.net/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring%EC%97%90%EC%84%9C-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-%ED%8C%8C%EC%9D%BCproperties%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;스프링(Spring)에서 &lt;/span&gt;&lt;span style=&quot;text-decoration: underline; font-weight: bold;&quot;&gt;하나의 properties 파일&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;을 읽어오는 방법&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
스프링 설정 파일(applicationContext.xml)에 다음 내용을 추가하면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;bean id=&quot;propertyConfigurer&quot; class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&amp;gt;
	&amp;lt;property name=&quot;location&quot; value=&quot;/WEB-INF/config/jdbc.properties&quot; /&amp;gt;
&amp;lt;/bean&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;스프링&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;(Spring)&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;에서 &lt;/span&gt;&lt;span style=&quot;text-decoration: underline; font-weight: bold;&quot;&gt;여러 properties 파일&lt;/span&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;을 읽어오는 방법&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
스프링 설정 파일(applicationContext.xml)에 다음 내용을 추가하면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;bean id=&quot;propertyConfigurer&quot; class=&quot;org.springframework.beans.factory.config.PropertyPlaceholderConfigurer&quot;&amp;gt;
	&amp;lt;property name=&quot;locations&quot;&amp;gt;
		&amp;lt;list&amp;gt;
			&amp;lt;value&amp;gt;/WEB-INF/config/jdbc.properties&amp;lt;/value&amp;gt;
			&amp;lt;value&amp;gt;/WEB-INF/config/settings.properties&amp;lt;/value&amp;gt;
		&amp;lt;/list&amp;gt;
	&amp;lt;/property&amp;gt;
&amp;lt;/bean&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Spring 1.x, 2.0, 2.5&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>스프링</category>
			<category>Properties</category>
			<category>spring</category>
			<category>spring configuration</category>
			<category>스프링</category>
			<category>스프링 설정</category>
			<category>프로퍼티</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/19</guid>
			<comments>http://kjunine.net/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring%EC%97%90%EC%84%9C-%ED%94%84%EB%A1%9C%ED%8D%BC%ED%8B%B0-%ED%8C%8C%EC%9D%BCproperties%EC%9D%84-%EC%82%AC%EC%9A%A9%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94#entry19comment</comments>
			<pubDate>Mon, 26 May 2008 09:34:35 +0900</pubDate>
		</item>
		<item>
			<title>스프링(Spring)에서 Log4j 설정 파일 위치를 바꿔 보아요.</title>
			<link>http://kjunine.net/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring%EC%97%90%EC%84%9C-Log4j-%EC%84%A4%EC%A0%95-%ED%8C%8C%EC%9D%BC-%EC%9C%84%EC%B9%98%EB%A5%BC-%EB%B0%94%EA%BF%94-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>&lt;span style=&quot;text-decoration: underline;&quot;&gt;스프링(Spring)에서는 Log4j 설정 파일(log4j.properties)을 임의의 파일로 지정&lt;/span&gt;할 수 있어요.&lt;br /&gt;
웹 어플리케이션이라면 다음과 같이 하면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;web.xml &amp;lt;web-app&amp;gt;&lt;/span&gt; 의 적당한 부분(&lt;span style=&quot;text-decoration: underline;&quot;&gt;DTD 혹은 스키마에 의거하여&lt;/span&gt;)에 다음 내용을 넣어주면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;context-param&amp;gt;
	&amp;lt;param-name&amp;gt;log4jConfigLocation&amp;lt;/param-name&amp;gt;
	&amp;lt;param-value&amp;gt;/WEB-INF/config/log4j.properties&amp;lt;/param-value&amp;gt;
&amp;lt;/context-param&amp;gt;

&amp;lt;listener&amp;gt;
	&amp;lt;listener-class&amp;gt;org.springframework.web.util.Log4jConfigListener&amp;lt;/listener-class&amp;gt;
&amp;lt;/listener&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Servlet 2.3, 2.4&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Spring 1.x, 2.0, 2.5&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>스프링</category>
			<category>log4j</category>
			<category>log4j.propeties</category>
			<category>spring</category>
			<category>web-app</category>
			<category>web.xml</category>
			<category>webapp</category>
			<category>스프링</category>
			<category>웹애플리케이션</category>
			<category>웹어플리케이션</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/18</guid>
			<comments>http://kjunine.net/entry/%EC%8A%A4%ED%94%84%EB%A7%81Spring%EC%97%90%EC%84%9C-Log4j-%EC%84%A4%EC%A0%95-%ED%8C%8C%EC%9D%BC-%EC%9C%84%EC%B9%98%EB%A5%BC-%EB%B0%94%EA%BF%94-%EB%B3%B4%EC%95%84%EC%9A%94#entry18comment</comments>
			<pubDate>Mon, 26 May 2008 09:26:11 +0900</pubDate>
		</item>
		<item>
			<title>웹 어플리케이션에서 jsp 파일의 직접 호출을 막아보아요.</title>
			<link>http://kjunine.net/entry/%EC%9B%B9-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%97%90%EC%84%9C-jsp-%ED%8C%8C%EC%9D%BC%EC%9D%98-%EC%A7%81%EC%A0%91-%ED%98%B8%EC%B6%9C%EC%9D%84-%EB%A7%89%EC%95%84%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>한&amp;nbsp; 가지 방법으로는 WEB-INF 밑에 jsp 파일을 두는 것인데요..&lt;br /&gt;
&lt;br /&gt;
그 방법이 여의치 않을 때 사용할 수 있는 방법이 있어요.&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;
web.xml &amp;lt;web-app&amp;gt;&lt;/span&gt; 의 적당한 부분(&lt;span style=&quot;text-decoration: underline;&quot;&gt;DTD 혹은 스키마에 의거하여&lt;/span&gt;)에 다음 내용을 넣어주면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;security-constraint&gt; 
	&amp;lt;web-resource-collection&gt; 
		&amp;lt;web-resource-name&gt;no_access&amp;lt;/web-resource-name&gt; 
		&amp;lt;url-pattern&gt;*.jsp&amp;lt;/url-pattern&gt; 
	&amp;lt;/web-resource-collection&gt; 
&amp;lt;/security-constraint&gt;&lt;/pre&gt; 
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Servlet 2.3 혹은 Servlet 2.4&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>기타</category>
			<category>jsp</category>
			<category>security</category>
			<category>web-app</category>
			<category>WEB-INF</category>
			<category>web.xml</category>
			<category>webapp</category>
			<category>webapp security</category>
			<category>보안</category>
			<category>웹애플리케이션</category>
			<category>웹애플리케이션 보안</category>
			<category>웹어플리케이션</category>
			<category>웹어플리케이션 보안</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/17</guid>
			<comments>http://kjunine.net/entry/%EC%9B%B9-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%97%90%EC%84%9C-jsp-%ED%8C%8C%EC%9D%BC%EC%9D%98-%EC%A7%81%EC%A0%91-%ED%98%B8%EC%B6%9C%EC%9D%84-%EB%A7%89%EC%95%84%EB%B3%B4%EC%95%84%EC%9A%94#entry17comment</comments>
			<pubDate>Mon, 26 May 2008 09:10:53 +0900</pubDate>
		</item>
		<item>
			<title>톰캣(Tomcat)의 컨텍스트(Context) 파일로 웹 어플리케이션을 추가해 보아요.</title>
			<link>http://kjunine.net/entry/%ED%86%B0%EC%BA%A3Tomcat%EC%9D%98-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8Context-%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EC%9B%B9-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%84-%EC%B6%94%EA%B0%80%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>${CATALINA_HOME}/conf/Catalina/localhost 에 다음과 같은 내용의 XML 파일을 추가하면 웹 어플리케이션이 설치가 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;context path=&quot;/WEB_APP_PATH&quot; docbase=&quot;WEB_APP_DIRECTORY&quot; debug=&quot;0&quot; privileged=&quot;true&quot; reloadable=&quot;true&quot; workdir=&quot;WORK_DIRECTORY&quot;&amp;gt;
	&amp;lt;logger classname=&quot;org.apache.catalina.logger.FileLogger&quot; prefix=&quot;LOG_FILE_PREFIX&quot; suffix=&quot;LOG_FILE_SUFFIX&quot; timestamp=&quot;true&quot; /&amp;gt;
&amp;lt;/context&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;realodable&lt;/span&gt; : WEB-INF 내용이 바뀌었을 때 자동으로 reload 하는 옵션&lt;br /&gt;
&lt;span style=&quot;font-weight: bold;&quot;&gt;workDir&lt;/span&gt; : jsp 등의 파일이 컴파일되는 작업 디렉토리 지정&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
예를 들면, 다음과 같이 할 수 있어요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: xml&quot;&gt;&amp;lt;context path=&quot;/test&quot; docbase=&quot;D:\Project\Test\Deploy&quot; debug=&quot;0&quot; privileged=&quot;true&quot; reloadable=&quot;true&quot; workdir=&quot;D:\Project\Test\Work&quot;&amp;gt;
	&amp;lt;logger classname=&quot;org.apache.catalina.logger.FileLogger&quot; prefix=&quot;localhost.test.&quot; suffix=&quot;.log&quot; timestamp=&quot;true&quot; /&amp;gt;
&amp;lt;/context&amp;gt;&lt;/pre&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;border: 1px dotted rgb(144, 224, 255); padding: 10px; background-color: rgb(210, 242, 255);&quot;&gt;
환경:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; Apache Tomcat 5.0&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;</description>
			<category>기타</category>
			<category>context</category>
			<category>Tomcat</category>
			<category>tomcat 5.0</category>
			<category>webapp</category>
			<category>웹애플리케이션</category>
			<category>웹어플리케이션</category>
			<category>컨텍스트</category>
			<category>톰캣</category>
			<category>톰캣 5.0</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/16</guid>
			<comments>http://kjunine.net/entry/%ED%86%B0%EC%BA%A3Tomcat%EC%9D%98-%EC%BB%A8%ED%85%8D%EC%8A%A4%ED%8A%B8Context-%ED%8C%8C%EC%9D%BC%EB%A1%9C-%EC%9B%B9-%EC%96%B4%ED%94%8C%EB%A6%AC%EC%BC%80%EC%9D%B4%EC%85%98%EC%9D%84-%EC%B6%94%EA%B0%80%ED%95%B4-%EB%B3%B4%EC%95%84%EC%9A%94#entry16comment</comments>
			<pubDate>Sun, 25 May 2008 18:32:10 +0900</pubDate>
		</item>
		<item>
			<title>Axis WSDD 레퍼런스</title>
			<link>http://kjunine.net/entry/Axis-WSDD-%EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Axis WSDD Referenz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.oio.de/axis-wsdd/&quot; target=&quot;_blank&quot;&gt;http://www.oio.de/axis-wsdd/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Axis 홈페이지보다도 더 자세한 WSDD 레퍼런스 +_+&lt;br /&gt;근데 어느나라껄까요? ㅎㅎ&lt;br /&gt;&lt;br /&gt;</description>
			<category>기타</category>
			<category>axis</category>
			<category>reference</category>
			<category>wsdd</category>
			<category>레퍼런스</category>
			<category>액시스</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/15</guid>
			<comments>http://kjunine.net/entry/Axis-WSDD-%EB%A0%88%ED%8D%BC%EB%9F%B0%EC%8A%A4#entry15comment</comments>
			<pubDate>Sun, 25 May 2008 18:19:22 +0900</pubDate>
		</item>
		<item>
			<title>웹 페이지를 자동으로 리프레시하게 해보아요.</title>
			<link>http://kjunine.net/entry/%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EB%A6%AC%ED%94%84%EB%A0%88%EC%8B%9C%ED%95%98%EA%B2%8C-%ED%95%B4%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>간단한 것이지만 종종 찾게 되는 것이라서 정리해 두어요..&lt;br /&gt;
&lt;br /&gt;
다음과 같은 메타 태그를 HTML의 &amp;lt;head&amp;gt;&amp;lt;/head&amp;gt; 안에 추가시키면 돼요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&amp;lt;meta http-equiv=&quot;refresh&quot; content=&quot;시간지정; url=경로/파일명&quot; /&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
예를 들면..&lt;br /&gt;
다음 내용을 index.jsp나 index.html에 저장해 두면..&lt;br /&gt;
index.do를 명시하지 않더라도 바로 가도록 할 수 있어요.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class=&quot;brush: html&quot;&gt;&amp;lt;metal http-equiv=&quot;refresh&quot; content=&quot;0; url=index.do&quot; /&amp;gt;&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
</description>
			<category>기타</category>
			<category>html</category>
			<category>META</category>
			<category>refresh</category>
			<category>리프레시</category>
			<category>웹페이지</category>
			<category>자동리프레시</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/14</guid>
			<comments>http://kjunine.net/entry/%EC%9B%B9-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A5%BC-%EC%9E%90%EB%8F%99%EC%9C%BC%EB%A1%9C-%EB%A6%AC%ED%94%84%EB%A0%88%EC%8B%9C%ED%95%98%EA%B2%8C-%ED%95%B4%EB%B3%B4%EC%95%84%EC%9A%94#entry14comment</comments>
			<pubDate>Sun, 25 May 2008 18:13:39 +0900</pubDate>
		</item>
		<item>
			<title>익셉션(exception) 처리 전략에 대하여..</title>
			<link>http://kjunine.net/entry/%EC%9D%B5%EC%85%89%EC%85%98exception-%EC%B2%98%EB%A6%AC-%EC%A0%84%EB%9E%B5%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC</link>
			<description>익셉션 처리에 관해 매우 참고가 될만한 글이에요.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://wiki.javajigi.net/pages/viewpage.action?pageId=538&quot; target=&quot;_blank&quot;&gt;J2EE 프로젝트에서의 Exception 처리 방안&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://wiki.javajigi.net/pages/viewpage.action?pageId=1973&quot; target=&quot;_blank&quot;&gt;Spring 프레임워크 워크북의 Exception에 대한 처리 전략&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;[일부 발췌] Checked Exception &amp;amp; UnChecked Exception (Runtime Exception) 선택 가이드&lt;br /&gt;&lt;br /&gt;Rod Johnson은 Checked Exception과 UnChecked Exception을 선택하는 가이드라인으로 다음과 같이 제안하고 있다.&lt;br /&gt;&lt;br /&gt;&lt;table class=&quot;confluenceTable&quot;&gt;&lt;tbody&gt;&lt;tr&gt;
&lt;th style=&quot;background-color: rgb(193, 193, 193);&quot; class=&quot;confluenceTh&quot;&gt;질문&lt;/th&gt;
&lt;th style=&quot;background-color: rgb(193, 193, 193);&quot; class=&quot;confluenceTh&quot;&gt;예제&lt;/th&gt;
&lt;th style=&quot;background-color: rgb(193, 193, 193);&quot; class=&quot;confluenceTh&quot;&gt;대답이 &quot;예&quot;일 경우의 추천&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;confluenceTd&quot;&gt;모든 호출자들이 이 문제를 처리해야하는가? 그 예외가 반드시 그 메써드를 위한 리턴값이 되어야 
하는가?&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot;&gt;processInvoice() 메써드에서 소비한도를 초과했다.&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot;&gt;Checked Exception을 정의하고 사용하여 자바의 컴파일시 해당 Exception을 
Check할 수 있는 장점을 활용하라&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: rgb(228, 228, 228);&quot; class=&quot;confluenceTd&quot;&gt;호출자들 중의 소수만이 이 문제를 처리하길 원하는가?&lt;/td&gt;
&lt;td style=&quot;background-color: rgb(228, 228, 228);&quot; class=&quot;confluenceTd&quot;&gt;JDO 예외들&lt;/td&gt;
&lt;td style=&quot;background-color: rgb(228, 228, 228);&quot; class=&quot;confluenceTd&quot;&gt;RuntimeException을 확장하라. 이것은 호출자들에게 예외를 잡을지에 대한 선택권을 
넘겨주면서도, 모든 호출자들에게 그것을 잡도록 강요하지는 않는다.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class=&quot;confluenceTd&quot;&gt;뭔가가 끔찍이 잘못되었는가? 그 문제가 치료 불가능한가?&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot;&gt;비지니스 메써드의 실행이 데이터베이스 접속의 오류로 실패하였다.&lt;/td&gt;
&lt;td class=&quot;confluenceTd&quot;&gt;RuntimeException을 확장하라. 호출자들이 사용자에게 그 에러에 관한 정보를 통보 받는 것 
외에는 아무것도 할수가 없기 때문이다.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;background-color: rgb(228, 228, 228);&quot; class=&quot;confluenceTd&quot;&gt;아직도 불명확한가?&lt;/td&gt;
&lt;td style=&quot;background-color: rgb(228, 228, 228);&quot; class=&quot;confluenceTd&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;td style=&quot;background-color: rgb(228, 228, 228);&quot; class=&quot;confluenceTd&quot;&gt;RuntimeException을 확장하라. 던져질 수 있는 예외들을 문서화하고, 호출자들이 그것을 
잡을지 결정하도록 하라&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(128, 184, 136); padding: 10px; background-color: rgb(202, 238, 206);&quot;&gt;참고:&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://wiki.javajigi.net/pages/viewpage.action?pageId=538&quot; target=&quot;_blank&quot;&gt;J2EE 프로젝트에서의 Exception 처리 방안&lt;/a&gt;&lt;br /&gt;&amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://wiki.javajigi.net/pages/viewpage.action?pageId=1973&quot; target=&quot;_blank&quot;&gt;Spring 프레임워크 워크북의 Exception에 대한 처리 전략&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
			<category>기타</category>
			<category>exception</category>
			<category>J2EE</category>
			<category>Java</category>
			<category>spring</category>
			<category>스프링</category>
			<category>익셉션</category>
			<category>자바</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/13</guid>
			<comments>http://kjunine.net/entry/%EC%9D%B5%EC%85%89%EC%85%98exception-%EC%B2%98%EB%A6%AC-%EC%A0%84%EB%9E%B5%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC#entry13comment</comments>
			<pubDate>Sun, 25 May 2008 18:04:13 +0900</pubDate>
		</item>
		<item>
			<title>log4j에 대하여..</title>
			<link>http://kjunine.net/entry/log4j%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;Log4J의 구조&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;Logger&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Log Message를 출력하는 방식을 분류하는 단위&lt;br /&gt;&lt;span style=&quot;color: rgb(255, 0, 0); text-decoration: underline;&quot;&gt;Class 혹은 Package 단위&lt;/span&gt;로 Logger를 나눌 수 있어요.&lt;br /&gt;그리고 출력할 Log Message의 Level을 지정할 수 있어요.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;Appender&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Log Message를 실제로 출력하는 녀석&lt;br /&gt;Console, File, DB 등에 Log Message를 출력할 수 있어요.&lt;br /&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;각 Logger마다 다른 Appender를 설정&lt;/span&gt;해서&lt;br /&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;Class 혹은 Package 별로 다른 출력 방식을 적용&lt;/span&gt;할 수 있어요.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;Layout&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Log Message의 형태&lt;br /&gt;Text, HTML 등의 형태로 Log Message를 출력할 수 있어요.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;log4j.properties 설정&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# Root Logger&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;log4j.rootLogger&lt;/span&gt;=INFO&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# 바로 위처럼 &lt;span style=&quot;text-decoration: underline;&quot;&gt;Root Logger에 어떤 Appender도 설정하지 않으면 Root Logger는 Log Message를 출력하지 않아요&lt;/span&gt;.&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# Console에서조차 다른 Package의 Log Message에는 관심이 없다면 위와 같이 해요. ^^/&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# Custom Logger&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;log4j.logger.&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;kjunine.test&lt;/span&gt;=INFO, &lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;console&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# kjunine.test Package 하위의 Class에서만 Log Message를 출력해요.&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;log4j.logger.&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;kjunine.test.sample_1&lt;/span&gt;=INFO, &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-1&lt;/span&gt;&lt;br /&gt;log4j.logger.&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;kjunine.test.sample_2&lt;/span&gt;=INFO, &lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-2&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# 각 Package 마다 다른 Appender를 적용시켜서 Package 별로 다른 파일에 Log Message를 출력해요.&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# Console Appender &lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;log4j.appender.&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;console&lt;/span&gt;=org.apache.log4j.ConsoleAppender&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;console&lt;/span&gt;.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;console&lt;/span&gt;.layout.ConversionPattern=%d %p [%c] - %m%n&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# File Appender&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-1&lt;/span&gt;=org.apache.log4j.RollingFileAppender&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-1&lt;/span&gt;.File=&lt;span style=&quot;font-weight: bold;&quot;&gt;test-1.log&lt;/span&gt;&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-1&lt;/span&gt;.MaxFileSize=10MB&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-1&lt;/span&gt;.MaxBackupIndex=10&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-1&lt;/span&gt;.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-1&lt;/span&gt;.layout.ConversionPattern=%d %p [%c] - %m%n&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: rgb(142, 142, 142);&quot;&gt;# File Appender&lt;/span&gt;&lt;br style=&quot;color: rgb(142, 142, 142);&quot;&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-2&lt;/span&gt;=org.apache.log4j.RollingFileAppender&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-2&lt;/span&gt;.File=&lt;span style=&quot;font-weight: bold;&quot;&gt;test-2.log&lt;/span&gt;&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-2&lt;/span&gt;.MaxFileSize=10MB&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-2&lt;/span&gt;.MaxBackupIndex=10&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-2&lt;/span&gt;.layout=org.apache.log4j.PatternLayout&lt;br /&gt;log4j.appender.&lt;span style=&quot;color: rgb(0, 128, 0);&quot;&gt;file-2&lt;/span&gt;.layout.ConversionPattern=%d %p [%c] - %m%n&lt;/div&gt;&lt;br /&gt;</description>
			<category>기타</category>
			<category>appender</category>
			<category>layout</category>
			<category>log4j</category>
			<category>log4j.properties</category>
			<category>Logger</category>
			<category>레이아웃</category>
			<category>로거</category>
			<category>로그</category>
			<category>어펜더</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/12</guid>
			<comments>http://kjunine.net/entry/log4j%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC#entry12comment</comments>
			<pubDate>Sun, 25 May 2008 17:53:44 +0900</pubDate>
		</item>
		<item>
			<title>파일 이름에 오늘 날짜를 넣어 보아요.</title>
			<link>http://kjunine.net/entry/%ED%8C%8C%EC%9D%BC-%EC%9D%B4%EB%A6%84%EC%97%90-%EC%98%A4%EB%8A%98-%EB%82%A0%EC%A7%9C%EB%A5%BC-%EB%84%A3%EC%96%B4-%EB%B3%B4%EC%95%84%EC%9A%94</link>
			<description>&lt;span style=&quot;font-weight: bold;&quot;&gt;윈도우&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;copy test.txt test.%date%.txt&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;%date%&lt;/span&gt; 변수 이용하면 되요.&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;%time%&lt;/span&gt; 변수도 있어요. +_+&lt;br /&gt;&lt;br /&gt;다음은 set /? 명령을 통해 나온 도움말에서 동적 환경 변수의 목록이에요.&lt;br /&gt;상위의 4개는 유용하게 쓸 수 있겠네요. ^^&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;%CD%&lt;/span&gt; - 현재 디렉터리 문자열로 확장합니다.&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;%DATE%&lt;/span&gt; - DATE 명령과 같은 포맷을 사용하여 현재 날짜로 확장합니다.&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;%TIME%&lt;/span&gt; - TIME 명령과 같은 포맷을 사용하여 현재 시간으로 확장합니다.&lt;br /&gt;&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;%RANDOM%&lt;/span&gt; - 0과 32767 사이에 있는 임의 숫자로 확장합니다.&lt;br /&gt;%ERRORLEVEL% - 현재 ERRPRLEVEL 값으로 확장합니다&lt;br /&gt;%CMDEXTVERSION% - 현재 명령 프로세서 확장자 버전 번호로 확장합니다.&lt;br /&gt;%CMDCMDLINE% - 명령 프로세서를 호출하는 원본 명령줄로 확장합니다.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;리눅스&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(204, 204, 204); padding: 10px; background-color: rgb(247, 247, 247);&quot;&gt;touch test.`date +%Y-%m-%d`.txt&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;명령어 중간에 &lt;span style=&quot;font-weight: bold;&quot;&gt;``&lt;/span&gt; 를 사용하여 다른 명령어를 실행할 수 있어요.&lt;br /&gt;멋진 기능이네요.. +_+&lt;br /&gt;&lt;br /&gt;&lt;div style=&quot;border: 1px dotted rgb(255, 242, 0); padding: 10px; background-color: rgb(255, 255, 204);&quot;&gt;리눅스 쪽이 다양한 포맷으로 지정할 수 있어서 더 유리하겠네요.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;</description>
			<category>기타</category>
			<category>date</category>
			<category>Linux</category>
			<category>windows</category>
			<category>날짜</category>
			<category>리눅스</category>
			<category>윈도우</category>
			<author>- kj -</author>
			<guid>http://kjunine.net/11</guid>
			<comments>http://kjunine.net/entry/%ED%8C%8C%EC%9D%BC-%EC%9D%B4%EB%A6%84%EC%97%90-%EC%98%A4%EB%8A%98-%EB%82%A0%EC%A7%9C%EB%A5%BC-%EB%84%A3%EC%96%B4-%EB%B3%B4%EC%95%84%EC%9A%94#entry11comment</comments>
			<pubDate>Sun, 25 May 2008 17:42:03 +0900</pubDate>
		</item>
	</channel>
</rss>
