Maven에서는 Archetype으로 플러그인을 만들수 있다고 한다.
다음은 Autodeploy라는 플러그인을 작성하는 챕터를 따라한 기록이다.

플러그인의 동작은 다음과 같다.
1. Tomcat을 중지
2. 기존에 deploy 되어있는 소스를 삭제
3. deploy시킬 프로젝트의 소스를 복사
4. Tomcat을 다시 구동

플러그인을 작성 과정은 다음과 같다.
mvn archetype:generate -DgroupId=pe.lucene.deploy
-DartifactId=maven-autodeploy-plugin
-DarchetypeGroupId=org.apache.maven.artietypes
-DarchetypeArtifactId=maven-archetype-mojo
groupId : 작성할 플러그인의 패키지로 쓰인다.
artifactId : 플러그인의 이름으로 쓰인다.

플러그인을 단위 테스트하기 위해서 JUnit로 테스트 하도록 한다.
@Test public void autodeploy() throws MojoExecutionException {
AutoDeployMojo  autoDeploy = new AutoDeployMojo();
autoDeploy.catalinaHome = "D:/was/apache-tomcat-5.5.26";

autoDeploy.execute();
}
플러그인의 설치는
mvn install 
로 수행한다. 결과는 오류 발생
junit 테스트를 위한 @Test annotation이 에러로 잡힌다. 1.5 이상에서만 지원된다고 한다.
pom.xml에 maven-compiler-plugin에 대한 사항을 추가한다.
01 <build>
02     <plugins>
03       <plugin>
04         <artifactId>maven-compiler-plugin</artifactId>
05         <configuration>
06           <source>1.5</source>
07           <target>1.5</target>
08         </configuration>
09       </plugin>
10     </plugins>
11   </build>
source를 1.5로 세팅하니 문제해결.

두번째 문제,

플러그인 프로젝트의 pom.xml에 junit를 선언했고, 의존성에 의해 다운로드까지 받아지는데 
플러그인 설치시에 찾지 못한다.
junit-3.8.1.jar 를 MAVEN_HOME'/lib에 복사후 다시 설치한다.
에러는 그대로고, 
로컬의 저장소를 모두 지우고 다시 실행하니, 
jar파일이 받아지지 않고 .pom 파일만 받아지고 있는 상황. < 아직 해결 못함 > 


저작자 표시
신고
Posted by 영겁회귀
6장 Maven을 이용한 빌드 자동화 ⅱ 
01. SQL 플러그인으로 데이타베이스 통합하기 

실행도중 해결하지 못한 문제다.
SQL 플러그인으로 개발 과정에서의 데이타 베이스 관련 문제를 해결할수 있는 방편중 하나이다.
테스트/개발 기간에 사용하는 데이타베이스를 프로젝트를 Deploy하는 시기에 초기화를 하는 과정이었다.

JDBC Driver를 찾지 못하는 문제가 계속 발생하였다.

1. Local Repository 검색
pom.xml에 의해 선언된 라이브러리는 Repository에 저장되게 되는데
그 위치는 MAVEN_HOME의 settings.xml에 선언된다. 
  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ~/.m2/repository
     <localRepository>D:\MyDev\MavenRepository_test</localRepository>
  -->
     <localRepository>~/.m2/repository</localRepository>
유저 홈디렉토리에 저장되게 되는데 XP라서 C:\Documents and Settings\Administrator\.m2 디렉토리에 저장되게 되는데, 공백이 들어가서 문제가 생기나 싶어서, 다른 디렉토리로 변경하여 빌드해봄.
<localRepository>D:/MyDev/MavenRepository</localRepository>
결과는 동일함. mysql을 사용했었는데 connector를 찾지 못함.

2. pom.xml 설정 체크 및 변경
<project>
...
   <dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.0.5</version>
<scope>compile</scope>
<systemPath>D:/MyDev/MavenRepository_test/mysql/mysql-connector-java/5.0.5/mysql-connector-java-5.0.5.jar</systemPath>
</dependency>
   </dependencies>
...
</project>
프로젝트 엘리먼트 자식엘리먼트로 <dependencies>아래 설정하고 
  <properties>
<jdbc.host>localhost</jdbc.host>
<jdbc.driver>com.mysql.jdbc.Driver</jdbc.driver>
<jdbc.dbname>mywebproject</jdbc.dbname>
<jdbc.username>root</jdbc.username>
<jdbc.password>vudghkfmf</jdbc.password>
  </properties>
로 <properties>에서 정의하고 <plugin>에서 불러다 사용하는 것으로 되어있었지만,
Maven 사이트의 예제대로 변경.
다음이 Maven예제 스타일.
<plugin>
.....
  <configuration>
          <driver>com.mysql.jdbc.Driver</driver>
          <url>jdbc:mysql://${jdbc.host}/${jdbc.dbname}</url>
          <username>${jdbc.username}</username>
          <password>${jdbc.password}</password>
  </configuration>

   <executions>
<execution>
<id>process-test-resources</id>
<phase>process-test-resources</phase>
<goals>
<goal>execute</goal>
</goals>
<configuration>
<driver>${jdbc.driver}</driver>
<url>jdbc:mysql://${jdbc.host}/mysql</url>
<sqlCommand>drop database ${jdbc.dbname}</sqlCommand>
<autocommit>true</autocommit>
<onError>continue</onError>
</configuration>
</execution>
...
<plugin>의 하위 엘리먼트로 <configuration> 엘리먼트에서 DB url, 계정, 패스워드등을 설정하는 스타일로 변경.

하지만, build시 오류는 계속 발생함.

3. 구글링 결과
비슷한 케이스를 검색한 결과, MAVEN_HOME/lib에 jdbc 드라이버를 넣고 빌드하는 경우는 오류가 나지 않았다.
같은 방법으로 로컬 저장소에 있는 jar파일을 복사하여 빌드하니 빌드가 이루어짐.
의문점은 의존성(dependency)을 정의하여 필요한 라이브러리를 다운로드 할수 있는데, 왜 Driver 클래스를 찾을수 없다고 나오는지 의문임. 의존성에 따라서 다운받은 jar파일을 사용하면 될것아닌지....

ps.
..참 따라하기 힘든 책이다 ㅋㅋ. 환경이 변하고, 버전이 업되기 때문에 따라하는데 오류 속출...



저작자 표시
신고
Posted by 영겁회귀
Maven 설치하고 작업을 하게 되면 필요한 플러그인을 다운받게 된다.
그러나 프록시 뒤에 있는 경우, 설치상태 그대로는 다운로드가 되지 않아 오류를 뱉어내게 된다.
[INFO] The plugin 'org.apache.maven.plugins:maven-archetype-plugin' does not exist or no valid version could be found
뭐 이런식이다. 

프로식 세팅을 위해
USER_HOME\.m2\settings.xml
(예: C:\Documents and Settings\Administrator\.m2\settings.xml)
파일을 변경해 준다.
<settings>
  <proxies>
   <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>XXX.XXX.XXX.XX</host>
      <port>XXX</port>
      <username>XX</username>
      <password>XX</password>
      <nonProxyHosts/>
    </proxy>
  </proxies>
</settings>

host, port에 프록시서버의 정보를 기입하고, username과 password는 없다면 아무것도 채우지 않는다.
설정 사항을 저장하고, 다시 시도하면 성공.

저작자 표시
신고
Posted by 영겁회귀

티스토리 툴바