설정은 여기를 참고한다. http://tomcat.apache.org/maven-plugin-2.0-SNAPSHOT/tomcat6-maven-plugin/usage.html 

서비스 배포 자동화를 목적으로 하는경우 여러가지 방법이 있겠지만 
가장 간단한 방법중의 하나는 tomcat에서 제공하는 manager 기능을 사용하는 방법이 있다.
이때 사용하는 플러그인은 톰캣 플러그인(http://mojo.codehaus.org/tomcat-maven-plugin/)이 있다. 하지만 더이상 유지보수가 되지 않는 플러그인이며 버젼없도 없을 예정으로 codehaus에서는 더이상 관리되지 않으며 비추천하고 있지만 톰켓 공식 홈페이지에 플러그인(http://tomcat.apache.org/maven-plugin)으로 등록되어 있다.

tomcat6 의 경우 api와 plugin은 다음의 것을 사용한다.
<dependency>
    <groupId>org.apache.tomcat</groupId>
    <artifactId>servlet-api</artifactId>
    <version>6.0.35</version>
</dependency>
<dependency>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat6-maven-plugin</artifactId>
    <version>2.0-beta-1</version>
    <packaging>maven-plugin</packaging>
</dependency>

- manager URL도 변경되어h
ttp://localhost:8080/manager/html 을 사용하도록 한다.
 

maven plugin 중 eclispe 플러그인(http://maven.apache.org/plugins/maven-eclipse-plugin/)은 maven 프로젝트에서 eclipse 프로젝트 설정(.project 와 몇몇 히든설정들)을 생성하기 위해 사용한다.
이 플러그인은 절대 eclipse에서 사용하던 maven 설정을 eclipse에서 사용하도록 적용하는 기능은 아니므로 사용할 경우 주의해야한다.  

 
Posted by twintail twintail
TAG maVen, Plugins


필요한 부분만 가져와 변경함.

from : http://lukieb.wordpress.com/2011/02/15/installing-maven-3-on-ubuntu-10-04-lts-server/ 


Download Maven 3.

$ wget http://ftp.heanet.ie/mirrors/www.apache.org/dist//maven/binaries/apache-maven-3.0.4-bin.tar.gz
$ tar -xzvf apache-maven-3.0.4-bin.tar.gz 
$ sudo cp -R apache-maven-3.0.4 /usr/local/apache-maven-3.0.4/ 
$ sudo ln -s ./apache-maven-3.0.4 ./apache-maven

Add the Maven 3 PATH variables to the environment file.
$ sudo vi /etc/environment

Two changes required:
Firstly add the following lines.
JAVA_HOME=”/usr/lib/jvm/java-6-sun”
M2_HOME=”/usr/local/apache-maven″
MAVEN_HOME=”/usr/local/apache-maven″
M2=”/usr/local/apache-maven/bin”

PATH=”/usr/local/apache-maven/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games”

$sudo shutdown -r now

$mvn -version
Apache Maven 3.0.4 (r1232337; 2012-01-17 00:44:56-0800)
Maven home: /usr/local/apache-maven
Java version: 1.6.0_26, vendor: Sun Microsystems Inc.
Java home: /usr/lib/jvm/java-6-sun-1.6.0.26/jre
Default locale: ko_KR, platform encoding: UTF-8
OS name: "linux", version: "3.0.0-12-generic", arch: "amd64", family: "unix"
 
Posted by twintail twintail
TAG maVen

Maven 에서 각 plugin의  Goal은 Phase로 지정하여 실행이 가능함.

pom.xml의 plugins 설정 중 일부.

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>sql-maven-plugin</artifactId>
            <version>1.4</version>

            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>5.1.6</version>
                </dependency>
            </dependencies>

            <executions>
                <execution>
                    <id>drop-db</id>
                    <phase>process-test-resources</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <url>jdbc:mysql://127.0.0.1/mysql</url>
                        <autocommit>true</autocommit>
                        <sqlCommand>
                            create database wikibook DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
                        </sqlCommand>
                    </configuration>
                </execution>
                <execution>
                    <id>create-schema</id>
                    <phase>process-test-resources</phase>
                    <goals>
                        <goal>execute</goal>
                    </goals>
                    <configuration>
                        <srcFiles>
                            <srcFile>src/main/sql/wikibook-schema.sql</srcFile>
                        </srcFiles>
                    </configuration>
                </execution>
            </executions>

            <configuration>
                <driver>com.mysql.jdbc.Driver</driver>
                <url>jdbc:mysql://127.0.0.1/wikibook</url>
                <username>wiki</username>
                <password>wiki</password>
                <autocommit>true</autocommit>
            </configuration>
        </plugin>



먼저 sql plugin의 goal을 살펴보면 (http://mojo.codehaus.org/sql-maven-plugin/ 참고)

sql plugin의 goal은 오로지 execute 한개이다.

mvn sql:execute의 실행 예

[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building wikibook Maven Webapp
[INFO]    task-segment: [sql:execute]
[INFO] ------------------------------------------------------------------------
[INFO] [sql:execute {execution: default-cli}]
[INFO] 0 of 0 SQL statements executed successfully
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESSFUL
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4 seconds
[INFO] Finished at: Wed Jan 25 21:10:31 PST 2012
[INFO] Final Memory: 8M/20M
[INFO] ------------------------------------------------------------------------


위 설정에서 보는 것과 같이 execute goal에서 수행하는 일은 database를 drop하고 
새로운 database를 생성한 후 table을 생성하는 일을 수행한다.

maven의 phase는 maven의 lifecycle로 정의 되어 있다. (http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html 참고)

따라서 위에서 보여주고 있는 sql 플러그인의 세팅은 각 페이즈에 해당 플러그인의 goal을 수행하게 하는 설정의 예를 보여주고 있다.

위 설정에 따르면
     maven의 lifecycle중 process-test-resources phase를 수행하는 동안 해당 goal을 수행한다.

실행 방법은 다음과 같다.
     mvn process-test-resurces






Posted by twintail twintail
TAG maVen

Maven의  pom.xml에 정의된 defendency 라이브러리를 프로젝트의 라이브러리 경로에 저장할 경우.

pom.xml에 정의된 defendency 라이브러리는 로컬저장소에 되고 빌드를 할경우 참조에만 사용되는데
이 라이브러리들을 프로젝트 경로로 복사해주는 플러그인으로 defendency 플러그인이 제공된다.

사용예는 다음과 같다.

mvn dependency:copy-dependencies

플러그인의 골에 대한 자세한 내용은 다음을 참고한다.

참고 : http://maven.apache.org/plugins/maven-dependency-plugin/ 

 
Posted by twintail twintail

Manve의 dependency 에 대한 내용으로 버젼의 범위 지정에 대한 내용임.

(1.0,2.0) : 1.0 보다 크고 2.0보다 작은
[1.0, 2.0] : 1.0과 같거나 크고 2.0과 같거나 작은

부연한 []은 각 버젼에 대한 이상, 이하를 지시하고,
() 는 각 버젼에 대한 초과, 미만을 지시한다.

따라서 아래의 예시. 1.에서 

예시. 1.

   <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>[3.8,4.8)</version>
      <scope>test</scope>
    </dependency>

 
 [3.8, 4.8)은 버전이 3.8이상 4.8미만에 대하여 의존성을 같는다.

만일 버전에 상관없이 가장 최신버번의 라이브러리와 의존 관계를 갖도록 설정하려면
LATEST, RELEASE를 입력하면 된다. 
Posted by twintail twintail