http://archive.apache.org/dist/jakarta/tomcat-connectors/jk2/


아파치 서버와 톰캣 연동할 시에 필요한 connector.tar 


ㅏ.... 이거땜에 3시간 삽질;



'Server > Web Application' 카테고리의 다른 글

[Upload] 파일 업로드시 권한 문제  (0) 2014.03.10
[Linux] Spring 톰캣 War Deploy  (0) 2014.02.26
[Redhat] ftp 연결 설정  (0) 2012.08.01
linux name  (0) 2012.07.31
vi 명령어, vi 단축키, vi(Visual Editer), vim  (0) 2012.07.27

$(document).ready(function() {

$('body').on("contextmenu", function(e){

return false;

});

$('body').on("dragstart", function(e){

return false;

});

$('body').on("selectstart", function(e){

return false;

});

});

'Client Standard > JavaScript & jQuery' 카테고리의 다른 글

[Ajax error] onkeyup ajax 에러 일때  (0) 2016.01.28
[jQuery] select box 강제 change 시키기  (0) 2016.01.28
[JSON] for each  (0) 2015.08.27
[Chart] FusionCharts 오픈 소스 API  (0) 2015.08.27
[Editor] Tiny  (0) 2014.12.29

ROWNUM DATA 를 추출한 후 조회 하자


ex) rownum 의 잘못된 사용 사례

WHERE ROWNUM = N ( N > 1 )

WHERE ROWNUM > N ( N > 1 )


추출하려면

select 

    rnum,

    t.*

from

(

select

    e1.*,

    rownum rnum

from

(select * from emp order by empno desc) e1 ) t

where rnum >= 6 and rnum <= 12


와 같이 추출 해야한다.




ORDER BY 와 ROWNUM 을 같은 위치에 두지 말자

sql 구성요소들은 아래와 같은 순서로 실행 된다


1) FROM, WHERE 절을 처리

2) ROWNUM 조건 적용

3) SELECT COLUMN LIST 절을 적용

4) GROUP BY 절을 적용

5) HAVING 절을 적용

6) ORDER BY 절을 적용




ROWNUM=1 은 ROWNUM<=1 로 사용하자


CURSOR_SHARING 을 FORCE나 SIMILAR로 적용 하였을 경우

ROWNUM=1을 ROWNUM=:"SYS_B_0" 


1이라는 상수값을 바인드 변수값으로 재해석하여 실행한다


고로 전체 DATA를 다 수행한 뒤 1개 값을 가져오므로 성능악화 된다


하지만 ROWNUM<=:"SYS_B_0" 는 값보다 작거나 같은 값이라는 범위

(STOPKEY)가 정해지기 때문에 변수의 값을 확인하여

작거나 같은 데이터를 추출하므로 전체 데이터를 처리하지 않고, 1건만 추출하고

SQL의 수행은 종료된다




INDEX_DESC와 ROWNUM<=1을 함께 사용하지 말자


완벽해 보이는 방법일수도 있겠으나 index가 unusabled이거나 없는 경우라면

데이터의 정합성이 훼손될 수 있으므로 이 방법 대신


max() 혹은 order by desc 후 ronum <= 1 값을 가져오는 쿼리를 쓰는 방법이 좋다.




ROWNUM<=1 은 항상 빠르지 않다


ROWNUM<=1이 빠른경우는 INDEX RANGE SCAN 하여 COLUMN 의 NUM_DISTINCT (종류가 적은)

최종 추출 건수가 적은 경우에만 빠르다.


즉 INDEX SCAN 하지 않고 FULL TABLE ACCESS 하여 NUM_DISTINCT가 많은 경우

모든 것을 실행뒤 COUNT STOPKEY 하므로 이러한 상황에선 느릴 수도 있다.




인라인 뷰에 ROWNUM을 추가할 때는 주의하자


select t3.*, t2.*

  from rownum_t2 t2,

( select rownum rnum, rownum_t3.*

from rownum_t3 ) t3

where t2.c1 = t3.c1

   and t2.c2 = :b1

   and t2.c3 = :b2;


>> rownum_t3 테이블을 table access full 하여 view 한 cost 비용이 높다


select

rownum, 

t3.*,

t2.*

  from rownum_t2 t2,

( select *

from rownum_t3 ) t3

where t2.c1 = t3.c1

   and t2.c2 = :b1

   and t2.c3 = :b2;


>> rownum_t3과 t2모두 index range scan 하여 join 후 count를 먹여

     cost 비용이 적게 든다

Default 설정값

아래는 변경하지 않은 이클립스/STS 설정파일의 전문이다. 혹시라도 설정을 변경하다가 실행이 되지 않거나 오류가 발생한다면, 아래를 참고하여 기본 설정값으로 되돌리면 된다.

이클립스 초기 설정(eclipse.ini 수정)

STS 초기 설정(STS.ini 수정)

변경사항

위 파일에서 vmargs 이하 부분을 아래와 같이 변경한다. 각 설정에 따른 설명은 아래쪽에 기재하였다.

설명

  • Dosgi.requiredJavaVersion=1.6
    JDK 1.6 이상을 설치했을 경우에 1.6으로 설정하면 속도가 빨라진다.
  • Xverify:none
    클래스의 유효성을 검사 생략. (시작 시간이 줄어 빨라진다.)
    초기 시동시 verfify체크를 하지 않는다. 당연히 시동이 빨라진다. 플러그인의 features에 문제가 발생 할 수 있는데 플러그인에 변경 사항이 있을 경우에는 이걸 키고 시동하고, 별 문제 없으면 추가해서 사용한다.
  • XX:+UseParallelGC
    병렬 가비지 컬렉션 사용. (병렬 처리로 속도 향상)
    Parallel Collector를 사용 하도록 한다. 체감 속도가 올라간다. 다중 프로세서를 사용한다면 필수.
  • XX:+AggressiveOpts
    컴파일러의 소수점 최적화 기능을 작동시켜 빨라진다.
  • XX:-UseConcMarkSweepGC
    병행 mark-sweep GC 수행하여 이클립스 GUI의 응답을 빠르게한다.
  • XX:+CMSIncrementalMode=true
    점진적인 GC
  • XX:PermSize=128M
    Permanent Generation(영구 영역) 크기(Out Of Memory 에러시 크기 조절)
  • XX:MaxPermSize=128M
    최대 Permanent Generation 크기
  • XX:NewSize=128M
    New Generation(새 영역) 크기
  • XX:MaxNewSize=128M
    New Generation(새 영역) 의 최대 크기
  • Xms512m
    이클립스가 사용하는 최소 Heap 메모리
  • Xmx512m
    이클립스가 사용하는 최대 Heap 메모리
    최소와 최대를 같은 값으로 설정하면 오르락 내리락 하지않아 빨라진다.

[메모리 정의 예]
1기가 이하 메모리인 컴퓨터인 경우 : -Xms256m -Xmx256m
2기가 ~ 3기가 메모리인 컴퓨터 : -Xms512m -Xmx512m
4기가 이상 메모리인 컴퓨터 : -Xms1024m -Xmx1024m

[ 메모리 설명 ]
JVM 은 3가지 메모리 영역을 관리한다
1. Permanent(영구) 영역 : JVM 클래스와 메소드를 위한 공간. = PermSize 설정
2. New/Young 영역 : 새로 생성된 개체들을 위한 공간. = NewSize 설정
3. Old 영역 : 만들어진지 오래된 객체들의 공간.(New 영역에서 이동해 온다)

필수설정

파일 인코딩 변경

  • Window -> Preferences -> General -> Content Types
  • 메뉴에서 window-preference 선택 후 General->Workspace 에서 Text file encoding을 UTF-8로 변경
참고
  • http://fordev.tistory.com/79
  • http://dkatlf900.tistory.com/55

기타

컬러 테마 변경

eclipsecolorthemes.org

이클립스 실행시 이미지변경

메모리 보기

Window > Perference > General 에서 Show heap status 체크하면 오른쪽 하단에 메모리를 볼 수 있다. 사용하다가, 메모리가 많이 올라 갔다 싶거나, 느려졌다 싶을 때마다, 옆에 쓰레기통 아이콘을 눌러서 메모리를 줄인다. 그러면 좀 더 쾌적하게 작업을 할 수 있다.

  • 자동 가비지 컬렉션 플러그인 : http://gyuha.tistory.com/290

사용하지 않는 검사 제거

필요 이상으로 많은 검사를 많이 해서 느려지는 경우도 많다. HTML이나 그 외 등등의 검사도 거기에 포함된다. 딱 필요한 검사만 하도록 한다.
Window > Perferences > Validation에서 자기가 사용하는 옵션만 켜둔다.

영어스펠링 검사 끄기
Window > Prereces > General > Editors > Spellings에서 Enable spell checking

기능 Disable / 습관 바꾸기

코딩하는 공간에서 잘 사용하지 않거나, 있는둥 마는둥 하는 기능을 꺼준다.

Automatic folding 끄기

코드 옆에 더하기 표시 나와서, 코드를 펼쳤다.. 닫았다 하는 기능이다.
Window->Preferences->Java(또는 사용언어)->Editor->Folding 모든 옵션을 해제(disable)한다.

Automatic Code Insight 끄기

Window->Preferences->Java(또는 해당언어)->Editor->Code Assist 에서 Enable auto activation 항목을 해제(disable)한다. 자동으로 동작하는 code assist 기능은 꺼지지만, ctrl+space으로 여전히 code assist를 사용할 수 있다. 손이 좀 불편하면 이클립스가 빨라진다. 하지만 대장은 이거 없인 못 살아서 켜놓았다.

사용하지 않는 플러그인 삭제 하기

이클립스를 패키지로 설치하다 보면, 사용하지 않는 기능도 많이 들어 가게 된다. 그 중에서 사용하지 않는 플러그인은 삭제하도록 한다.

사용하지 않는 프로젝트 닫아주기

현재 작업과 관련없는 프로젝트를 닫자. 이클립스가 접근하는 파일의 갯수를 줄여준다.

사용하지 않는 파일은 닫아주기

작업하다가 사용하지 않는 창은 닫는다. 메모리가 절약된다. 이클립스를 종료시 편집하던 문서를 모두 닫고 종료하면 다음에 이클립스를 띄울때 좀 더 가볍게 띄울 수 있다. 그리고 Window->Preferences->General->Editors에서 Close editors automatically를 켜준다. 그럼 아래 설정된 숫자만큼만 문서가 열린다. 그 이상의 문서는 자동으로 닫아진다. 이렇게 사용하면, 무심결에 많이 열린 파일이 적어진다. 메모리 절약은 보너스!

사용하지 않는 플러그인을 start list에서 제외하기

Window > Preferences > General > Startup and Shutdown에서, 불필요한 플러그인을 startup list에서 제외한다. 이렇게 하면 이클립스 실행시 좀 더 가볍게 실행 할 수 있다.

참고
  • http://yun0223.tistory.com/42

기본 Preferences 최적화

  • 4.2(Juno)일 경우 Preferences → General → Appearance
    • Theme을 Classic으로 변경해야 빨라진다.
    • Enabled animations를 끈다.
  • Preferences → General : Show Heap status : 메모리 사용상태와 GC 강제 실행 버튼를 보여줌.
  • Preferences → General → Editors → Text Editors : Show line numbers
  • Preferences → General → Appearance → Colors and Fonts : Basic Text Font를 나눔고딕코딩 혹은 그 외 코딩용 글꼴로 변경한다. 코딩용 글꼴은 고정폭이고 숫자 1,대문자 아이(I), 소문자엘(l), 숫자 0과 알파벳 오(O)를 구분 할 수 있어야 한다.
  • Preferences → General → Editors → Text Editors에서 배경색 눈 안아픈 회색 톤으로 조정
  • Preferences → General → Workspace에서 Text file encoding과 New text file delimiter의 기본 값을 정해준다.
  • Maven과 연동해서 사용할 경우, Maven 빌드에서 생성한 target 디렉토리의 JSP/HTML 등을 Eclipse가 Validation하느라 상당한 시간을 소모하기도 한다. 이 때는 Preferences → Validation → 각 항목에서 Exclude Gruop을 만들고 target/ 디렉토리를 Rule로 추가한다.
  • Preferences → Team → Ignored Resources에 target과 bin 등의 빌드 디렉토리 추가.
  • Windows 환경 성능 최적화
    • 프로젝트 폴더의 속성 → 일반 → 고급 : 이 폴더의 파일 속성 및 내용 색인 허용 체크 해제
    • 백신 프로그램의 실시간 감시에서 프로젝트 폴더를 예외로 설정한다.(파일 락을 거는 현상도 줄어들겠지?)
  • 기타 최적화
    • spell check 해제 : Preferences → General → Editors → Text Editors → Spelling에서 체크 해제.
    • Validation에서 build 쪽은 꼭 필요한 것만 남기고 모두 해제
    • General → Appearance → Label Decorations에서 SVN/CVS 및 기타 등등의 데코레이션 제거.
  • DIFF에서 공백 무시 Preferences → General → Compare/Patch에서 Ignore white space 체크
  • 저장시 액션 지정 : 이클립스 파일 저장시 공백 없애기
    • Preferences → Java → Editor → Save Actions 에서 저장시 액션들을 지정한다.
    • Remove Trailing whitespace 선택
    • Remove unused imports 선택
참고
  • http://kwonnam.pe.kr/wiki/eclipse/config
  • http://blog.naver.com/sungback/90139189173

탭 사이즈 변경

  • http://jedagi.tistory.com/30

자동줄바꿈(word wrap)

  • http://blackun.egloos.com/5179984
  • http://ahtik.com/eclipse-update/

참고

  • http://blog.naver.com/PostView.nhn?blogId=sungback&logNo=90097516641
  • http://thdnf1004.tistory.com/8
  • http://yun0223.tistory.com/42
  • http://gyuha.tistory.com/290
  • http://blog.bagesoft.com/443
  • http://www.slipp.net/wiki/pages/viewpage.action?pageId=5177633
  • http://kwonnam.pe.kr/wiki/eclipse/config
  • http://blog.naver.com/sungback/90139189173
  • http://eclipsecolorthemes.org/



출처 : http://dezang.net/234


SQL 중 최종 추출 결과가 적은 경우에는, Function의 수행위치를 변경하여 과다 수행되는 성능 문제를 해결 할 수 있다.

예를들면,


select z.*

(select

empCnt (e.title) empCnt ,

deptCnt (d.title) deptCnt,

...

from emp e inner join dept d ON e.deptno = d.deptno

where ... ) z

order by rownum <= 3


만약 emp 와 dept 의 inner join rows가 4만건이라면 해당 함수도 4만횟수를 수행하여 쿼리 I/O 상에서는 문제가 없겟지만

함수 I/O 상에서 문제가 크게 발생된다 왜냐하면 함수를 굳이 4만번 수행하지 않고 rownum 3회만 수행하게 할 수 있기 때문이다.



select x.*

, empCnt(x.eTitle) empCnt

, deptCnt(x.dTitle) deptCnt

from (

select z.*

from (

select

e.title eTitle ,

d.title dTitle ,

...

from emp e inner join dept d ON e.deptno = d.deptno

where ... ) z

order by rownum <= 3

) x


위와 같이 쿼리를 수행하면 과다 수행 되지않고 3row를 뽑은뒤 함수가 3번만 수행 되게 되어진다.

하지만 SQL의 최종 추출 결과가 많은 경우에는, Function 의 수행 위치를 바꾸는 것만으로 성능을 개선하기는 힘들다.


Main SQL 에서 추출한 데이터 중 Function을 수행하는 입력값의 종류가 적은 경우 (Distinct rows가 적은경우) 스칼라 서브쿼리에서 Function을 수행하도록 변경하면, Multi Buffer 를 이용해 성능을 개선 시킬 수 있다.


select

jisaname( gr. jisacode1, '00', sysdate ) jisaname1 , 

jisaname( gr.jisacode1, gr.jisacode2, sysdate ) jisaname2,

groupname( gr.parent_groupno ) parent_groupname , 

groupname ( gr.groupno ) groupname ,

...

from t_member mem inner join t_group gr ON gr.groupno = mem.groupno

where ...


해당 쿼리의 함수별 추출 데이터 건수가 4,708 * 4 = 18,832 건이라 하면


select

(SELECT jisaname( gr. jisacode1, '00', sysdate ) FROM DUAL) jisaname1 , 

(SELECT jisaname( gr.jisacode1, gr.jisacode2, sysdate ) FROM DUAL) jisaname2,

(SELECT groupname( gr.parent_groupno ) FROM DUAL) parent_groupname , 

(SELECT groupname ( gr.groupno ) FROM DUAL) groupname ,

...

from t_member mem inner join t_group gr ON gr.groupno = mem.groupno

where ...


jisaname() 은 2번, groupname()은 총 2,213번으로 수행건이 줄어들었다.

gr.jisacode1, 과 gr.jisacode2가 모두 동일한 값을 가지고 있어 스칼라 서브쿼리에서 수행되도록 변경한 경우,

최초 1회씩만 수행하고 나머지는 Cache에서 결과 값을 가져 올 수 있었기 때문이다.



이와같이 입력 값에 대응하는 값의 종류가 다양하지 않아, 같은 입력 값에 대한 결과 값이 항상 동일하다면,

Function 은 스칼라 서브쿼리에서 수행하도록 변경하여 Function 수행에 의한 부하를 감소시켜야 한다.




※TIP) JSON 객체 형태를 validate 하고 싶으면, Google 에서 JSON Validator 라고 쳐서 아무거나 쓰면 디버깅하기 쉽다


JSON each 문을 돌리는 문법


-- JS

var text = '{ "employees" : [' +

'{ "firstName":"John" , "lastName":"Doe" },' +

'{ "firstName":"Anna" , "lastName":"Smith" },' +

'{ "firstName":"Peter" , "lastName":"Jones" } ]}';


var textObj = JSON.parse(text);


위처럼 해당 JSON을 String 만들어서 JSON.parse 해도 좋고

아래처럼 JSON 자체를 변수에 담아도 좋다.


var obj = {

   "listData": [

                {

                    "dmNum": "",

                    "dmName": "정책",

                    "L1": "100.0",

                    "L2": "86.11",

                    "L3": "0.0",

                    "TOT": "89.79",

                    "TYPE": ""

                },

                {

                    "dmNum": "",

                    "dmName": "조직",

                    "L1": "100.0",

                    "L2": "70.73",

                    "L3": "12.5",

                    "TOT": "70.31",

                    "TYPE": ""

                },

                {

                    "dmNum": "",

                    "dmName": "위수탁 보안관리",

                    "L1": "75.0",

                    "L2": "50.0",

                    "L3": "0.0",

                    "TOT": "52.63",

                    "TYPE": ""

                }

         ]

};


-- HTML

<p id="demo">hi</p> 


<script>

$.each(obj, function(idx, item) {

$.each(item, function(key, value) {

console.log("key : " + key + " TOT : " + item[key].TOT + " dmName : " + item[key].L1);

});

});

</script>


each 문 2개를 사용해서 총 갯수만큼의 각 attr 에 접근이 가능하다.



JSON 혹은 XML 데이터로 jquery chart 형식을 trial 버전으로 공개해주는

사이트가 있어 퍼왔다.


http://www.fusioncharts.com/dev/usage-guide/getting-started/your-first-charts/building-your-first-chart.html


해당주소는 위인데 정말이지 신세계다.

나중에 꼭 chart 쓸일이 있으면 이걸 써보는 것도 좋은 방법인듯 하다 :)

'Client Standard > JavaScript & jQuery' 카테고리의 다른 글

[우클릭방지] jquery 구문  (0) 2015.09.09
[JSON] for each  (0) 2015.08.27
[Editor] Tiny  (0) 2014.12.29
[validation] 파일업로드 체크  (0) 2014.09.17
[프린트] window.print()  (0) 2014.09.12

Maven 으로 프로젝트 설정시에는 의존관계 라이브러리 (*.jar) 파일을 다운로드 받아 WEB-INF/lib 에 따로 설정할 필요가 없이 pom.xml 에 해당 의존관계 라이브러리에 대한 의존관계를 기술해 주면 자동을 관련 라이브러리를 다운로드 받아 프로젝트에서 사용할 수 있게 합니다.

properties 정의

properties Element 는 pom.xml 에서 사용하는 속성을 선언해 줄 수 있습니다. 해당 의존관계 라이브러리의 버전을 일괄적으로 적용하거나 내부 속성등을 설정하는 용도로 사용하시면 됩니다.
properties 에 정의된 속성을 사용할 경우에는 ${속성명} 과 같이 사용하시면 됩니다.
예를 들어 아래의 properties 하위에 정의된 org.springframework.version 속성을 사용하실 경우에는 ${org.springframework.version} 으로 하시면 해당 속성값을 “3.1.1.RELEASE” 로 적용하여 줍니다.

dependencies 정의

dependencies 는 프로젝트에서 사용할 의존관계 라이브러리들을 정의하는 Element 입니다. 아래의 설정을 복사하여 pom.xml 에 붙여 넣습니다.

Plugin 설정

현재 M2Eclipse 버전에서 생성된 Maven 프로젝트는 기본적으로 JDK v1.5 로 설정이 되어있으며, 해당 버전을 JDK v1.6 으로 변경한 후 WTP (Web Tools Platform) 지원을 하기위하여 plugins 항목에 아래와 같이 설정을 합니다.

전체 pom.xml 소스

pom.xml 설정 적용

pom.xml 파일을 저장하신 후 프로젝트 명에서 마우스 오른쪽 버튼을 클릭한 후 Maven > Update Project Configuration (1) 을 클릭하여 M2Eclipse 의 Maven 프로젝트 설정을 업데이트 합니다.

Maven 프로젝트 설정이 정상적으로 적용이 되면 아래의 그림과 같이 JDK 버전이 JavaSE-1.6 으로 변경이 됩니다.


출처 : http://blog.beany.co.kr/archives/1068

'Server Enterprise > Gradle & Maven' 카테고리의 다른 글

[Gradle] cache 삭제  (0) 2021.08.12
[maven] 외부 jar 추가  (0) 2016.10.26
[Maven] M2Eclipse project 생성 2  (0) 2015.08.26
[Maven] M2Eclipse project 생성 1  (0) 2015.08.26
[MAVEN] 설치 및 이클립스 연동  (0) 2015.08.17

maven-archetype-webapp 를 이용하여 Maven WebApp 을 생성했을 시에는 아래와 같이 maven 프로젝트의 webapp 디렉토리가 프로젝트 > src > main > webapp (1) 와 같이 위치하게 됩니다.

Web 프로젝트 작업시 webapp 디렉토리가 깊어질 경우 jsp 파일을 열기 위하여 약간의 손(?) 이 가게 되므로 해당 폴더를 프로젝트 바로 하위로 위치를 시키도록 합니다.

먼저 프로젝트 하위의 pom.xml 을 열어 <build> 요소 하위에 아래와 같이 Maven Plugin 을 설정합니다. warSourceDirectory 설정 항목에 원하시는 디렉토리 경로 및 디렉토리명을 설정 해주시면 됩니다. 현재는 webapp 로 지정을 하였습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<build>
    <finalName>sample-spring-webapp</finalName>
 
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <warSourceDirectory>webapp</warSourceDirectory>
            </configuration>
        </plugin>
    </plugins>
 
</build>

pom.xml 파일을 저장하신 후 프로젝트 명에서 마우스 오른쪽 버튼을 클릭한 후 Maven > Update Project Configuration (1) 을 클릭하여 M2Eclipse 의 Maven 프로젝트 설정을 업데이트 합니다.

Maven Project 가 정상적으로 업데이트가 되면 maven-war-plugin 의 warSourceDirectory 속성에서 설정한 디렉토리가 아래와 같이 같이 프로젝트 하위에 webapp (1) 폴더가 생성되게 됩니다.

기존의 webapp 디렉토리 (프로젝트 > src > main > webapp) 하위의 META-INF, WEB-INF, index.jsp 파일을 새로 생성된 프로젝트 > webapp 디렉토리 하위로 복사 시킨 후 (1) 기존의 webapp 디렉토리  (프로젝트 > src > main > webapp) 를 삭제 (2) 하여 최종적으로 아래의 그림과 같이 디렉토리를 구성합니다.


출처 : http://blog.beany.co.kr/archives/1044

M2Eclipse 의 상단 메뉴에서 File -> New -> Other 를 선택하거나 Ctrl + N 단축키를 통하여 프로젝트 생성 팝업을 띄웁니다.

아래와 같이 New 팝업이 나타나면 Maven -> Maven Project (1) 를 선택한 후 [Next >] 버튼 (2) 을 클릭하여 다음 설정 화면으로 이동합니다.

Maven Project 선택

Maven Project 가 저장될 위치를 확인한 후 [Next >] (1) 버튼을 클릭하여 다음 설정 화면으로 이동합니다.

Maven Project 에서 기본 으로 사용할 프로젝트 템플릿 (Archetype) 을 선택합니다. Spring WebApp 를 세팅하기 위해서는 maven-archetype-webapp (1) 을 선택한 후 [Next >] 버튼 (2) 을 클릭하여 다음 설정 화면으로 이동합니다.

프로젝트의 기본 정보를 입력하는 화면이며, 각 입력 항목 (1) 은 다음과 같습니다.

  • Group Id : 프로젝트 그룹의 식별 문자열을 입력합니다.
  • Artifact Id : Group Id 에 따른 하위 프로젝트를 구분하기 위한 ID 값을 입력합니다.
  • Version : Artifact 의 버전을 입력합니다.
  • Package : 프로젝트 생성시 기본으로 생성되는 패키지 명을 입력합니다. 빈 문자열을 넣어도 무방합니다.

기본 정보를 입력이 완료되면 [Finish] 버튼 (2) 을 클릭하여 Maven Project 을 생성을 완료합니다.

프로젝트가 정상적으로 생성이 되면 Package Explorer 에 아래의 화면과 같이 프로젝트 디렉토리가 구성이 됩니다.

maven-archetype-webapp 을 Maven 기본 템플릿으로 선택한 후 프로젝트 생성시에는 java 관련 src 폴더가 존재하지 않아, Package Explorer 에서도 Java Source 폴더가 보이지 않습니다. 프로젝트 > src > main 폴더 하위에 아래와 같이 java 폴더 (1) 를  생성하여 줍니다.

Java 폴더 생성 후 M2Eclipse 에서는 java 폴더를 Source 폴더로 인식하지 못하기 때문에 프로젝트 명에서 마우스 오른쪽 버튼을 클릭한 후 Maven > Update Project Configuration (1) 을 클릭하여 M2Eclipse 의 Maven 프로젝트 설정을 업데이트 합니다.

Maven 프로젝트 업데이트가 정상처리 되면 아래와 같이 java Source 폴더 (1) 로 인식되게 됩니다.

M2Eclipse 에서의 Maven Web Project 의 기본 생성이 완료되었습니다. 다음에는 Maven Layout 변경에 대한 설정을 합니다.


출처 : http://blog.beany.co.kr/archives/1030

+ Recent posts