2018년 10월 24일 수요일

자체인증서 만들기

For the Jazz Liberty setup, these steps seem to work to generate a certificate valid for two years:
  • Shutdown Liberty
  • Open a command prompt and navigate to C:\IBM\JazzTeamServer\server\jre\bin
  • Rename ibm-team-ssl.keystore to ibm-team-ssl.keystore.old :
    > move ..\..\liberty\servers\clm\resources\security\ibm-team-ssl.keystore ..\..\liberty\servers\clm\resources\security\ibm-team-ssl.keystore.old
  • > keytool -genkey -keyalg RSA -alias selfsigned -keystore ..\..\liberty\servers\clm\resources\security\ibm-team-ssl.keystore -storepass ibm-team -validity 730 -keysize 2048 -dname CN=ibmjazz,OU=clm,O=ibm,C=us -ext san=dns:ibmjazz 
  • Restart Liberty
  • In firefox, try to open your jazz server, e.g. task management - you will get a certificate error (because of the new certificate) which you should accept.
  • Check the certificate using Tools->Page Info->Security->View Certificate, check the expiry is now two years out and the hostname is now ibmjazz:

NOTE: the default keystore password is ibm-team - if you use a different password you will have to also edit the server.xml and put the new password in.
NOTE: in the above instructions, only do the move once, the second time, delete ibm-team-ssl.keystore otherwise you lose the original file
NOTE: the above instructions also set the hostname in the certificate to ibmjazz, as needed by some clients so that the cert hostname corresponds to the SSL URL hostname https://ibmjazz

2014년 12월 25일 목요일

DOORS와 DWA (DOORS Web Access) 9.6.1 설치 및 설정하기

출처 : 
  •  픽스팩 다운로드 : https://www-945.ibm.com/support/fixcentral/
  • 도움말 : https://www.ibm.com/support/knowledgecenter/ko/SSYQBZ_9.6.1/com.ibm.rational.dwa.install.doc/topics/c_node_installing.html

1. 먼저 DOORS 9.6.1.10 서버를 설치합니다.
    수정한 설치위치 : C:\IBM\Rational\DOORSSERVER\9.6
    디폴트 포트번호 : 36677

2. DOORS 9.6.1.10 클라이언트를 설치합니다.
    수정한 설치위치 : C:\IBM\Rational\DOORSCLIENT\9.6
    서버 포트번호 : 36677
    서버 호스트이름 : ALMDEMO
    라이센스 서버정보 : 27000@ALMDEMO

3. DWA 9.6.1.10 서버를 설치합니다.
    수정한 설치위치 : C:\IBM\Rational\DWA\9.6.1.10
    derby/derby.properties 수정 (라인 추가) : derby.drda.portNumber=1537
    derby.start.bat 수정 :  1527을 1537로 변경
    dwa.start.bat 수정 : 
        set DWA_PATH=C:\IBM\Rational\DWA\9.6.1.10
        set DOORS_PATH=C:\IBM\Rational\DOORSCLIENT\9.6
    dwa.shutdown.bat 수정 : 
        set DWA_PATH=C:\IBM\Rational\DWA\9.6.1.10

4. 옵션으로 DWA 서버에 대한 HTTPS를 설정합니다. (디폴트 HTTP 프로토콜을 사용할 경우에는 SKIP!)

    (1) SSL키 데이터베이스를 생성합니다.
    C:\ibm-jdk-71-i386\sdk\bin> keytool -genkey -keyalg RSA -keysize 1024 -dname "CN=ALMDEMO" -validity 365 -storepass ibm-team -keystore C:\IBM\Rational\DWA\9.6.1.10\server\ibm-team-ssl.keystore -keypass ibm-team -alias ALMDEMO

    (2) SSL키 데이터베이스에 인증서를 생성합니다.
    C:\ibm-jdk-71-i386\sdk\bin> keytool -selfcert -dname "CN=ALMDEMO" -validity 365 -storepass ibm-team -keystore C:\IBM\Rational\DWA\9.6.1.10\server\ibm-team-ssl.keystore -alias ALMDEMO

    (3) 톰캣 server.xml 파일을 수정하여 디폴트 HTTPS 포트에서 SSL키 데이터베이스를 사용하도록 수정합니다.
    수정할 파일위치 : C:\IBM\Rational\DWA\9.6.1.10\server\conf\server.xml
    수정할 파일내용 :
    <Connector port="8443"
        URIEncoding="UTF-8"
        clientAuth="false"
        maxThreads="150"
        minSpareThreads="25"
        maxSpareThreads="75"
        enableLookups="true"
        disableUploadTimeout="true"
        acceptCount="100"
        scheme="https"
        secure="true"
        SSLEnabled="true"
        keystoreFile="C:\IBM\Rational\DWA\9.6\server\ibm-team-ssl.keystore" (localhost.keystore)
        keystorePass="ibm-team" (doorsdwa)
        SSLVerifyClient="none"
        SSLEngine="on"
        SSLVerifyDepth="2"
        sslProtocol="TLS"
        algorithm="ibmX509"
        compression="on"
        noCompressionUserAgents="gozilla, traviata"
        compressableMimeType="text/html,text/xml,text/css,text/plain,text/javascript,application/javascript,application/x-javascript" />


5. DWA 서버를 설정합니다.

(*) Rational DOORS 데이터베이스 서버 설정

         (예) HTTPS일 경우
    C:\IBM\Rational\DOORSSERVER\9.6\bin > dbadmin -data 36677@ALMDEMO -dcnEnable -dcnBrokerUri tcp://ALMDEMO:61616 -dcnChannelName dcn -dwaProtocol https -dwaHost ALMDEMO -dwaPort 8443
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -stop
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -start
    C:\IBM\Rational\DOORSSERVER\9.6\bin > dbadmin -data 36677@ALMDEMO -dcnInfo
        "Data Change Notifications are currently enabled..."
    C:\IBM\Rational\DOORSSERVER\9.6\bin > dbadmin -data 36677@ALMDEMO -dwaProtocol https -dwaHost ALMDEMO -dwaPort 8443
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -stop
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -start

         (예) HTTP일 경우
    C:\IBM\Rational\DOORSSERVER\9.6\bin > dbadmin -data 36677@ALMDEMO -dcnEnable -dcnBrokerUri tcp://ALMDEMO:61616 -dcnChannelName dcn -dwaProtocol http -dwaHost ALMDEMO -dwaPort 8080
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -stop
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -start
    C:\IBM\Rational\DOORSSERVER\9.6\bin > dbadmin -data 36677@ALMDEMO -dcnInfo
        "Data Change Notifications are currently enabled..."
    C:\IBM\Rational\DOORSSERVER\9.6\bin > dbadmin -data 36677@ALMDEMO -dwaProtocol http -dwaHost ALMDEMO -dwaPort 8080
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -stop
    C:\IBM\Rational\DOORSSERVER\9.6\bin > doorsd -start

(*) festival.xml 파일을 수정합니다.

    수정할 파일 위치 : C:\IBM\Rational\DWA\9.6.1.10\server\festival\config\festival.zml
  • DOORS 클라이언트를 실행하고 데이터베이스 ID를 확인합니다
         C:\IBM\Rational\DOORSCLIENT\9.6 > doors
         도구 > DXL 편집 ... 메뉴 선택 후  print getDatabaseIdentifier() 실행하고 결과값을 메모합니다
         (예) 5acf408944ab2f85
  • <f:repository-mapping에서 데이터베이스 ID을 변경(예, REPLACE_THIS_WITH_YOUR_REPOSITORY_ID)합니다.
         (예)  repositoryUrn="urn:rational:ers-5acf408944ab2f85:" />
  • <f:properties에서 설정(예, MYHOSTNAME) 합니다.
         (예) HTTPS일 경우
    <f:property name="licence.server.location" value="27000@ALMDEMO" />
    <f:property name="ForceHttpsForAuthenticationForOAuth" value="true" />
       
         (예) HTTP일 경우
    <f:property name="licence.server.location" value="27000@ALMDEMO" />
    <f:property name="ForceHttpsForAuthenticationForOAuth" value="false" />

(*) doorsRedirector.properties 파일을 수정합니다.
    수정할 파일위치 : C:\IBM\Rational\DWA\9.6.1.10\server\festival\config

         (예) HTTPS일 경우
   <entry key="doors.url.prefix">doors://ALMDEMO:36677/</entry>

         (예) HTTP일 경우
   <entry key="doors.url.prefix">doors://ALMDEMO:36677/</entry>


6. DWA 서버를 실행합니다.

    C:\IBM\Rational\DWA\9.6.1.10> setx JAVA_HOME "C:\ibm-jdk-8-x64\jre" /M

    C:\IBM\Rational\DWA\9.6.1.10> notepad dwa.start.bat
  • DOORS_PATHDWA_PATH를 기입한 후에 실행합니다.
    C:\IBM\Rational\DWA\9.6.1.10> dwa.start.bat

7. DWA 서버에 접근합니다.

         (예) HTTPS일 경우
    https://almdemo:8443/dwa

         (예) HTTP일 경우
    http://almdemo:8080/dwa

  • DWA 아키텍처





...

2014년 12월 23일 화요일

CC/CQ 8.0.1 및 웹 콤포넌트 설치하기

CQ 설치 문서: http://pic.dhe.ibm.com/infocenter/cqhelp/v8m0r1/topic/com.ibm.rational.clearquest.help.ic.doc/topics/c_node_installing.htm

CC 설치 문서: http://pic.dhe.ibm.com/infocenter/cchelp/v8m0r1/topic/com.ibm.rational.clearcase.help.ic.doc/topics/c_node_installing.htm

참고자료: http://www-01.ibm.com/support/docview.wss?uid=swg21573917

1. Installation Manager에 CC/CQ 설치 및 픽스팩 이미지 저장소를 지정합니다.

2. 설치를 시작합니다.

3. 설치할 제품을 선택합니다.

4. 설치에 필요한 전제 조건을 확인합니다.

5. 패키지 그룹과 설치 디렉토리를 설정합니다.

6. 설치할 기능을 선택합니다.

7. HTTP 서버를 구성합니다.

8. CC 서비스 계정을 구성을 합니다.

9. 중간 과정을 생략하고 CC WAS 설치를 구성합니다.

CCRC WAN Server (ccrcprofile) ports:
WC_defaulthost=16080
WC_adminhost=16060
WC_defaulthost_secure=16443
WC_adminhost_secure=16043
BOOTSTRAP_ADDRESS=16809
SOAP_CONNECTOR_ADDRESS=16880
ORB_LISTENER_ADDRESS=9400
SAS_SSL_SERVERAUTH_LISTENER_ADDRESS=9701
CSIV2_SSL_SERVERAUTH_LISTENER_ADDRESS=9703
CSIV2_SSL_MUTUALAUTH_LISTENER_ADDRESS=9702
DCS_UNICAST_ADDRESS=9653
SIB_ENDPOINT_ADDRESS=7576
SIB_ENDPOINT_SECURE_ADDRESS=7586
SIB_MQ_ENDPOINT_ADDRESS=5858
SIB_MQ_ENDPOINT_SECURE_ADDRESS=5878
SIP_DEFAULTHOST=5360
SIP_DEFAULTHOST_SECURE=5361
IPC_CONNECTOR_ADDRESS=9634 
(CAUTION: Port 9634 is also the default port for AppSrv02 created using the WAS Profile Management Tool )

10. CQ WAS 설치를 구성합니다.

ClearQuest (cqwebprofile) ports:
WC_defaulthost=12080
WC_adminhost=12060
WC_defaulthost_secure=12443
WC_adminhost_secure=12043
BOOTSTRAP_ADDRESS=12809
SOAP_CONNECTOR_ADDRESS=12880
ORB_LISTENER_ADDRESS=9300
SAS_SSL_SERVERAUTH_LISTENER_ADDRESS=9601
CSIV2_SSL_SERVERAUTH_LISTENER_ADDRESS=9603
CSIV2_SSL_MUTUALAUTH_LISTENER_ADDRESS=9602
DCS_UNICAST_ADDRESS=9553
SIB_ENDPOINT_ADDRESS=7476
SIB_ENDPOINT_SECURE_ADDRESS=7486
SIB_MQ_ENDPOINT_ADDRESS=5758
SIB_MQ_ENDPOINT_SECURE_ADDRESS=5778
IPC_CONNECTOR_ADDRESS=9604
SIP_DEFAULTHOST=5260
SIP_DEFAULTHOST_SECURE=5261


11. 패키지를 설치합니다.

12. 설치 종료 후 컴퓨터를 재시작합니다.


...

2013년 10월 14일 월요일

윈도우 설치 - 끝나지 않은 설치 문제


프로그램 설치 또는 제거 시 사용할 수 있는 방법입니다.



방법1. UpdateExeVolatile 레지스트리 키 값을 제거하기
1. 레지스트리 편집기를 엽니다 : Regedit.exe 또는 Regedt32.exe.
2. HKLM\SOFTWARE\Microsoft\Updates로 이동합니다.
3. 오른편에서 UpdateExeVolatile 키를 더블클릭합니다.
4. 키 값을 0으로 구성합니다.
5. 레지스트리 편집기를 답습니다.

방법2. PendingFileRenameOperations 레지스트리 키를 제거하기
1. 레지스트리 편집기를 엽니다 : Regedit.exe 또는 Regedt32.exe.
2. HKLM\SYSTEM\CurrentControlSet\Control\Session Manager로 이동합니다.
3. 오른편에서 PendingFileRenameOperations 키를 우클릭하고 삭제를 합니다.
4. 레지스트리 편집기를 답습니다.

2013년 8월 17일 토요일

Maven 프로젝트를 Eclipse에서 활용하기


Maven이 작성한 프로젝트 구조를 이클립스에서 인식할 수 있도록 하는 방법

1. Maven에서 생성한 프로젝트 구조를 이클립스에 인식할 수 있도록 필요한 파일을 작성합니다.


-> C:\Users\kdyoung\web\mywebapp>mvn eclipse:eclipse

[INFO] Using Eclipse Workspace: null
[INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER
[INFO] Not writing settings - defaults suffice
[INFO] Wrote Eclipse project for "mywebapp" to C:\Users\kdyoung\web\mywebapp.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------


-> C:\Users\kdyoung\web\mywebapp>dir

2013-08-17  오후 12:41               466 .classpath
2013-08-17  오후 12:41               457 .project
2013-08-17  오후 12:17             1,197 pom.xml
2013-08-17  오전 10:19    <DIR>          src
2013-08-17  오후 12:03    <DIR>          target

C:\Users\kdyoung\web\mywebapp\.classpath
------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry kind="src" path="src/main/java" including="**/*.java"/>
  <classpathentry kind="output" path="target/classes"/>
  <classpathentry kind="var" path="M2_REPO/javax/servlet/servlet-api/2.4/servlet-api-2.4.jar"/>
  <classpathentry kind="var" path="M2_REPO/javax/servlet/jsp/jsp-api/2.1/jsp-api-2.1.jar"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>
------------------------------------------------------------------------------------------------------------

C:\Users\kdyoung\web\mywebapp\.project
------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
  <name>mywebapp</name>
  <comment>NO_M2ECLIPSE_SUPPORT: Project files created with the maven-eclipse-plugin are not supported in M2Eclipse.</comment>
  <projects/>
  <buildSpec>
    <buildCommand>
      <name>org.eclipse.jdt.core.javabuilder</name>
    </buildCommand>
  </buildSpec>
  <natures>
    <nature>org.eclipse.jdt.core.javanature</nature>
  </natures>
</projectDescription>
------------------------------------------------------------------------------------------------------------




이클립스(예, http://ftp.daum.net/eclipse//technology/epp/downloads/release/kepler/R/eclipse-jee-kepler-R-win32.zip)를 실행합니다.

2. 이클립스에서 C:\Users\kdyoung\web\mywebapp 프로젝트를 Import합니다.


3. 이클립스에서 Maven 빌드를 수행합니다.



Trouble Shooting

M2_REPO 변수



설치된 JRE



디폴트 JRE


JDK Compliance





...

Maven 빌드 플러그인 사용하기 - Jetty 빌드 플러그인

Jetty 빌드 플러그인은 http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html를 참고합니다. (Maven 빌드 플러그인 전반적인 내용은 http://maven.apache.org/plugins/를 참고합니다.)
!주의 : You need to use Maven 3 and Java 1.7 for this plugin.

<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-maven-plugin</artifactId>
<version>${project.version}</version>


여기서는 이클립스 프로젝트 사이트로 옮기기 전의 http://docs.codehaus.org/display/JETTY/Maven+Jetty+Plugin 사이트 내용을 기준으로 합니다.

<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>


1. pom.xml을 수정합니다.


C:\Users\kdyoung\web\mywebapp\pom.xml
-----------------------------------------------------------------------------------------------------------
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.samples.maven</groupId>
  <artifactId>mywebapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>mywebapp</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.10</version>
      </plugin>
    </plugins>
  </build>
</project>
-----------------------------------------------------------------------------------------------------------

2. jetty를 실행합니다.


-> C:\Users\kdyoung\web\mywebapp>mvn jetty:run

[INFO] Configuring Jetty for project: mywebapp
[INFO] Webapp source directory = C:\Users\kdyoung\web\mywebapp\src\main\webapp
[INFO] web.xml file = C:\Users\kdyoung\web\mywebapp\src\main\webapp\WEB-INF\web.xml
[INFO] Classes = C:\Users\kdyoung\web\mywebapp\target\classes
[INFO] Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
[INFO] Context path = /mywebapp
[INFO] Tmp directory =  determined at runtime
[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
[INFO] Web overrides =  none
[INFO] Webapp directory = C:\Users\kdyoung\web\mywebapp\src\main\webapp
[INFO] Starting jetty 6.1.10 ...
[INFO] jetty-6.1.10
[INFO] No Transaction manager found - if your webapp requires one, please configure one.
[INFO] Started SelectChannelConnector@0.0.0.0:8080
[INFO] Started Jetty Server

3. Jetty 서버가 실행된 것을 확인하고 mywebapp 사이트로 이동합니다.





4. JSP 파일을 수정하고 브라우저를 새로 고침하면 바로 확인됩니다.


C:\Users\kdyoung\web\mywebapp\src\main\webapp\index.jsp
-----------------------------------------------------------------------------------------------------------
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World Updated!</h1>
    </body>
</html>
-----------------------------------------------------------------------------------------------------------



5. Java 클래스가 수정되면 동적으로 반영하기 위해서는 pom.xml을 수정합니다.


C:\Users\kdyoung\web\mywebapp\pom.xml
-----------------------------------------------------------------------------------------------------------
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.samples.maven</groupId>
  <artifactId>mywebapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>mywebapp</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>maven-jetty-plugin</artifactId>
        <version>6.1.10</version>
<configuration>
            <scanIntervalSeconds>5</scanIntervalSeconds>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
-----------------------------------------------------------------------------------------------------------



...

Maven을 이용한 샘플 Web 빌드 및 컴파일러 플러그인 구성

1. Web 애플리케이션을 작성할 폴더에서 Archetype에 기초해 프로젝트 구조를 작성합니다.

-> C:\Users\kdyoung\web>mvn archetype:generate

500: remote -> org.codehaus.mojo.archetypes:webapp-j2ee13 (-)
501: remote -> org.codehaus.mojo.archetypes:webapp-j2ee14 (-)
502: remote -> org.codehaus.mojo.archetypes:webapp-javaee6 (-)
503: remote -> org.codehaus.mojo.archetypes:webapp-javaee7 (Archetype for a web application using Java EE 7.)
504: remote -> org.codehaus.mojo.archetypes:webapp-jee5 (-)
-> Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 294: 501

Choose org.codehaus.mojo.archetypes:webapp-j2ee14 version:
1: 1.0
2: 1.0.1
3: 1.1
4: 1.2
5: 1.3
-> Choose a number: 5: 엔터키

-> Define value for property 'groupId': : org.samples.maven
-> Define value for property 'artifactId': : mywebapp
-> Define value for property 'version':  1.0-SNAPSHOT: : 엔터키
-> Define value for property 'package':  org.samples.maven: : 엔터키
Confirm properties configuration:
groupId: org.samples.maven
artifactId: mywebapp
version: 1.0-SNAPSHOT
package: org.samples.maven
-> Y: : 엔터키

-> C:\Users\kdyoung\web>cd mywebapp
-> C:\Users\kdyoung\web\mywebapp>dir

2013-08-17  오전 10:19             1,218 pom.xml
2013-08-17  오전 10:19    <DIR>          src

2. pom.xml 파일 내용을 살펴 봅니다.

C:\Users\kdyoung\web\mywebapp\pom.xml
---------------------------------------------------------------------------------------------------------
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>org.samples.maven</groupId>
  <artifactId>mywebapp</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>mywebapp</name>
  <url>http://maven.apache.org</url>

  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
          <source>1.4</source>
          <target>1.4</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
---------------------------------------------------------------------------------------------------------

3. 샘플 JSP 파일을 살펴봅니다.
C:\Users\kdyoung\web\mywebapp\src\main\webapp\index.jsp
---------------------------------------------------------------------------------------------------------
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Hello World!</h1>
    </body>
</html>
---------------------------------------------------------------------------------------------------------

4. 샘플 web.xml 파일을 살펴봅니다.
C:\Users\kdyoung\web\mywebapp\src\main\webapp\WEB-INF\web.xml
---------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>mywebapp</display-name>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
        </welcome-file-list>
    </web-app>
---------------------------------------------------------------------------------------------------------

5. 샘플을 빌드합니다.
-> C:\Users\kdyoung\web\mywebapp>mvn package
[INFO] Packaging webapp
[INFO] Assembling webapp [mywebapp] in [C:\Users\kdyoung\web\mywebapp\target\mywebapp-1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\Users\kdyoung\web\mywebapp\src\main\webapp]
[INFO] Webapp assembled in [105 msecs]
[INFO] Building war: C:\Users\kdyoung\web\mywebapp\target\mywebapp-1.0-SNAPSHOT.war
[INFO] WEB-INF\web.xml already added, skipping
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

6. Tomcat을 실행한 뒤 mywebapp를 Deploy합니다.



7. mywebapp 사이트로 이동합니다.


Maven은 빌드 관련 플러그인들로 빌드를 수행하며 각각의 플러그인에 대한 환경 구성이 가능합니다. Archetype 선택 후 생성된 pom.xml에서 compiler는 JDK 1.4 기준으로 구성되어 있어 generic 구문을 사용시 에러가 발생하게 됩니다.

---------------------------------------------------------------------------------------------------------
참고: http://maven.apache.org/plugins/maven-compiler-plugin/index.html

The Compiler Plugin is used to compile the sources of your project. Since 3.0, the default compiler is javax.tools.JavaCompiler (if you are using java 1.6) and is used to compile Java sources. If you want to force the plugin using javac, you must configure the plugin option forceJavacCompilerUse.

Also note that at present the default source setting is 1.5 and the default target setting is 1.5, independently of the JDK you run Maven with. If you want to change these defaults, you should set source and targetas described in Setting the -source and -target of the Java Compiler.
---------------------------------------------------------------------------------------------------------


8. MyClass.java 파일을 작성합니다.
C:\Users\kdyoung\web\mywebapp\src\main\java\org\samples\maven\MyClass.java
---------------------------------------------------------------------------------------------------------
package org.samples.maven;

import java.util.*;

public class MyClass {

public static void main(String[] args)
{
List<String> stringList = new ArrayList<String> ();
}
}


---------------------------------------------------------------------------------------------------------

9. 컴파일을 시도합니다.

-> C:\Users\kdyoung\web\mywebapp>mvn compile

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.
0.2:compile (default-compile) on project mywebapp: Compilation failure
[ERROR] C:\Users\kdyoung\web\mywebapp\src\main\java\org\samples\maven\MyClass.java:[9,6] generics are not supported in -source 1.4
[ERROR] (use -source 5 or higher to enable generics)
[ERROR] List<String> stringList = new ArrayList<String>();

10. pom.xml 파일을 수정합니다.

(방법 1) 아래와 같이 source/target 값을 1.4에서 1.5로 수정합니다.
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.0.2</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

(방법 2) <configuration> 또는 <plugin> 또는 또는 <plugins> 또는 <build> block을 제거합니다. 디폴트 구성으로 1.5를 사용하기 때문입니다.

11. 컴파일을 합니다.

-> C:\Users\kdyoung\web\mywebapp>mvn compile

[INFO] Compiling 1 source file to C:\Users\kdyoung\web\mywebapp\target\classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
...