블로그 이미지
올해목표 // 10월 어학연수 떠나자~ 자수씨

카테고리

전체글 (1457)
Brand New! (28)
주절주절 (213)
MOT (11)
해외쇼핑 (49)
쇼핑노트 (150)
취미생활 (94)
iPhone (4)
Eclipse (121)
Google (83)
Spring (31)
JAVA (176)
JavaScript (59)
WEB (49)
Database (20)
OS (26)
Tools (8)
Tips (26)
IT정보 (1)
Book (21)
Programming (37)
외부행사 (43)
주변인들 (17)
여행노트 (60)
학교생활 (30)
회사생활 (52)
사회생활 (5)
외국어공부 (12)
잡동사니 (30)
Total
Today
Yesterday
 
12-22 00:00
 

달력

« » 2024.12
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
 

최근에 올라온 글

최근에 달린 댓글


이클립스에서 m2e 플러그인을 사용할 경우, 알프레스코 플러그인이 아래와 같이 빨간 빛을 내는 경우가 있습니다.


Plugin execution not covered by lifecycle configuration: org.alfresco.maven.plugin:alfresco-maven-plugin:1.0.2:set-version (execution: default-set-version, phase: initialize)



컴파일에는 문제가 생기지 않지만 빨간 엑스박스가 자꾸 눈에 걸립니다...


m2e 위키에서는 다음과 같은 방법을 제안합니다. 읽어보시고 더 좋은 방안이 있으시면,,, 공유 좀,,,

(http://wiki.eclipse.org/M2E_plugin_execution_not_covered)


하지만 귀찮으니 걍 "Mark goal set-version as ignored in Eclipse build in Eclipse preference..." 를 클릭하여 에러를 무시합니다.




해당 설정은 프로젝트 properties 에 "Maven > Lifecycle Mapping" 에서 확인할 수 있습니다.



빨간불 끄는 것도 일이네요,,,



Posted by 자수씨
, |

Recently came across this the existance of the -DskipTests argument while running maven.

From the userguide:

You can also skip the tests via command line by executing the following command:

mvn install -DskipTests

If you absolutely must, you can also use the maven.test.skip property to skip compiling the tests. maven.test.skip is honored by Surefire, Failsafe and the Compiler Plugin.

mvn install -Dmaven.test.skip=true

Skiptests is a feature of surefire, while -Dmaven.test.skip is a feature of maven itself.


일단 스크랩... 나중에 정리해야지...


참고자료

http://www.inze.be/andries/2011/05/11/maven-difference-between-dskiptests-and-dmaven-test-skiptrue/


Posted by 자수씨
, |

 

이클립스에서 사용하는 메이븐 플러그인은 Sonatype 에서 만든 m2eclipse 플러그인과 이클립스 공식 플러그인으로 합쳐진 m2e 플러그인이 있습니다.

 

어차피 둘 다 태생이 같기 때문에 사용법이나 다른 큰 문제는 없으나, 프로젝트 시에는 문제가 될 수 있습니다.

 

 

[프로젝트 홈]/.project

<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
 <name>vicki-common</name>
 <comment></comment>
 <projects>
 </projects>
 <buildSpec>
  <buildCommand>
   <name>org.eclipse.jdt.core.javabuilder</name>
   <arguments>
   </arguments>
  </buildCommand>
  <buildCommand>
   <name>org.maven.ide.eclipse.maven2Builder</name>
   <arguments>
   </arguments>
  </buildCommand>
  <buildCommand>
   <name>org.eclipse.m2e.core.maven2Builder</name>
   <arguments>
   </arguments>
  </buildCommand>

 </buildSpec>
 <natures>
  <nature>org.eclipse.jdt.core.javanature</nature>
  <nature>org.maven.ide.eclipse.maven2Nature</nature>

  <nature>org.eclipse.m2e.core.maven2Nature</nature> 
 </natures>
</projectDescription>

 

org.maven.ide.eclipse.maven2Nature 는 이전의 sonatype 에서 제공했던 메이븐 플러그인 네이처이며, org.eclipse.m2e.core.maven2Nature 는 eclipse 에 통합된 m2e 플러그인 네이처입니다.

 

SI가 아닌 이상 각자 자신의 개발환경을 셋팅할 것이고, 이전의 개발환경을 가지고 있는 사람과 새로 개발환경을 셋팅한 사람 모두를 아우르기 위해서는 위와 같은 설정이 필요합니다.

 

 

Posted by 자수씨
, |

Uber JAR???

JAVA / 2012. 7. 23. 09:54



Maven 쪽 뭔가를 찾다보니 uber-jar 라는 생소한 단어가 튀어나왔다.


google 을 뒤저보아도 명쾌한 정의가 없었지만 대충 의미라도 확인할 수 있는 사이트를 찾아 내 맘대로 해독(?)했다.


 By default maven is generating a small JAR file, which just contains your compiled classes and other project files. If you want to have a single JAR file which also includes all dependent JAR files, you have to create a uber JAR.

출처: http://robert-reiz.com/2011/10/19/uber-jar-with-maven/



의존관계인 라이브러리의 JAR 를 풀어서 JAR로 묶는 것이 아니라 해당 라이브러리를 그대로 JAR안에 넣고 META-INF 로 조정하는 형식???


확실한 의미를 알게되면 다시 정리해야겠다 =ㅁ='''


Posted by 자수씨
, |

지난번에 한번 포스팅(m2eclipse Run 메뉴 수정~)을 했었던 m2eclipse 의 Run 메뉴 팝업 확장법을 공개합니다.




m2eclipse 플러그인 확인

우선 현재 설치되어 있는 m2eclipse 플러그인을 확인합니다.

[ECLIPSE_HOME]/plugins
 └ ...
 └ org.maven.ide.eclipse.editor.xml_0.12.1.20110112-1712.jar
 └ org.maven.ide.eclipse.editor_0.12.1.20110112-1712.jar
 └ org.maven.ide.eclipse.jdt_0.12.1.20110112-1712.jar
 └ org.maven.ide.eclipse.launching_0.12.1.20110112-1712.jar
 └ org.maven.ide.eclipse.maven_model_edit_0.12.1.20110112-1712.jar

 └ ...

저는 어제 (2011-09-28) 재설치를 했는데, 0.12.1.20110112-1712 버전이 설치되어 있었습니다.


플러그인 수정

org.maven.ide.eclipse.launching_0.12.1.20110112-1712.jar 파일의 압축을 해제합니다.

[ECLIPSE_HOME]/plugins/org.maven.ide.eclipse.launching_0.12.1.20110112-1712.jar
 └ icons
 └ META-INF
 └ org
 └ org.maven.ide.eclipse.cliresolver.jar
 └ org.maven.ide.eclipse.cliresolver30.jar

 └ plugin.properties
 └ plugin.xml



plugin.properties 파일에 아래의 내용을 추가합니다.

plugin.properties
...
m2.popup.lifecycle.cleanAndPackage=Maven clean and package
m2.popup.lifecycle.cleanAndInstall=Maven clean and install
m2.popup.lifecycle.cleanAndDeploy=Maven clean and deploy



메뉴 팝업을 확장하기 위해 plugin.xml 을 수정합니다.

plugin.xml




다시 jar 압축을 묶고 이클립스를 실행하면... 바로 반영이 되지 않습니다.
이전 버전의 이클립스에서는 바로 반영이 되었는데, 플러그인 로딩방식이 바뀌었거나 m2eclipse 에서 캐싱을 하는지 바로 반영이 되지 않습니다.

해결방법은 다음과 같습니다.
1. org.maven.ide.eclipse.launching_0.12.1.20110112-1712.jar 파일을 다른 곳으로 옮겨둔 후 이클립스 실행
2. Run 메뉴에서 maven 관련 메뉴가 빠진 것을 확인
3. org.maven.ide.eclipse.launching_0.12.1.20110112-1712.jar 파일을 복구한 후 이클립스 실행



반복작업을 줄여줄 수 있어서 좋네요~ 쿠헤헤

Posted by 자수씨
, |


저희 조직에서는 메이븐 리파지토리로 유명한 Sonatype Nexus 를 사용하고 있습니다.

처음에 설정하기 귀찮아서 모든 사용자에게 Administrator 권한을 주었는데, 간혹가다 deploy 한 후 배포물을 삭제하는 경우가 있었습니다. 별 문제 없이 지나가다가 운영서버 배포 시ㅔ 같은 버전의 다른 배포물로 인해 재대로 반영이 되지 않는 문제가 발생하여 배포물에 대해 삭제를 하지 못하도록 권한을 설정하였습니다.

새로운 Role 을 만들고 아래와 같이 권한을 설정합니다.

  • Nexus Anonymous Role
  • Nexus Developer Role
  • All Repositories - (view)
  • All Repositories - (update)
  • All Repositories - (create)
  • All Repositories - (read)




처음에는 "All Repositories - (update)" 를 빼고 권한을 부여했더니, jar 파일은 올라가는데 나머지 pom 파일이나 sources.jar 파일이 올라가지 않아 update 권한도 추가하니 정상적으로 deploy 가 됩니다.


Posted by 자수씨
, |

다중 프로젝트의 디펜던시 버전 관리

다중 프로젝트를 사용할 경우 디펜던시의 버전 번호를 각각의 pom.xml 파일에 정의하여 설정하여, 새로운 버전으로 업그레이드가 이루어질 경우 모든 pom.xml 을 변경해야 합니다.

메이븐에서는 <dependencyManagement> 엘리먼트를 통하여 디펜던시 버전 번호를 병합할 수 있는 방안을 제공합니다.

부모 POM 에서 <dependencyManagement> 정의를 통해 자식 POM 에서 버전을 명기하지 않아도 디펜던시를 참조할 수 있습니다.

메이븐은 <dependencyManagement> 엘리먼트를 정의한 프로젝트를 찾을 때까지 자식 프로젝트에서 부모 프로젝트까지 확인합니다.


예제

부모 POM의 종송성 버전 정의

자식 프로젝트 POM



위와같이 자식 프로젝트에 버전을 명시하지 않아도 부모 POM <dependencyManagement> 엘리먼트에서 정의되었기 때문에, 자식 프로젝트의 spring-data-jpa 디펜던시의 버전 번호가 전달됩니다.


결론적으로 <dependencyManagement> 엘리먼트는 버전 번호를 지정하지 않아도 어느 하위 프로젝트라도 디펜던시를 정의할 수 있도록 해주는 환경변수와 같습니다.

모든 프로젝트에서 사용하는 디펜던시라면 부모 POM 에서 정의하여 사용하는 것이 훨씬 관리에 용이합니다.

참고자료

Maven, Sonatype이 만든 Maven 핵심 가이드 (팀 오브라이언 지음 / 장선진 옮김)

Posted by 자수씨
, |

Sonatype Nexus OSS REST API

Tips / 2011. 8. 7. 21:49



가장 대표적인 Maven 리파지토리 관리 툴인 Sonatype Nexus 에서도 REST API 를 제공합니다.

Sonatype Nexus OSS REST API


만약 특정 artifact 의 최신 버전 POM 정보를 알고 싶다면 아래와 같은 API 를 통해 정보 확인이 가능합니다.

http://서버/nexus/service/local/artifact/maven?g={groupId}&a={artifactId}&v=LATEST&r={repository}



그 외에도 시스템 통합 환경을 위해 여러가지 API 를 활용 가능합니다.

Posted by 자수씨
, |

maven-jar-plugin 프로젝트 페이지에 있는 http://maven.apache.org/plugins/maven-jar-plugin/usage.html 를 참조하여 아래와 같이 작성하였으나 재대로 파일이 필터링이 되지 않습니다.

패키징 시에 conf/config.properties 를 빼려고 하였으나...

<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3.1</version>
        <configuration>
          <includes>
            <include>**/config.properties</include>
          </includes>
        </configuration>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>



계속 테스트를 하고 자료를 찾다보니, maven-jar-plugin 버전을 2.3 으로 처리한 것을 발견하여 버전만 바꾸니... 잘됩니다.


<project>
  ...
  <build>
    <plugins>
      ...
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.3</version>
        ...
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>



끙;;; 도대체 뭥미...



Posted by 자수씨
, |


지난 포스트에서 Spring Roo 소스를 내려받았습니다. Spring Roo 소스는 메이븐 환경으로 구성되어 있습니다.

Maven 빌드를 통해 이클립스에서 개발이 가능하도록 구성을 진행합니다.


Maven 빌드

1. Maven 빌드
기존에 사용하던 메이븐을 이용하여 Spring Roo 소스를 빌드를 합니다.

> mvn clean install eclipse:clean eclipse:eclipse

[WARNING] Rule 1: org.apache.maven.plugins.enforcer.RequireMavenVersion failed w
ith message:
Detected Maven Version: 2.2.1 is not in the allowed range 3.0.1.
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Some Enforcer rules have failed. Look above for specific messages explain
ing why the rule failed.
[INFO] ------------------------------------------------------------------------
[INFO] For more information, run Maven with the -e switch
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 15 seconds
[INFO] Finished at: Sun Jul 24 00:45:23 KST 2011
[INFO] Final Memory: 26M/63M
[INFO] ------------------------------------------------------------------------



Spring Roo 는 메이븐 3.0.1 버전 이상이어야만 빌드가 가능한가 봅니다.


2. Maven (3.0.1 버전 이상) 설치
메이븐 프로젝트 페이지에서 최신버전을 다운로드 받습니다.
http://maven.apache.org/download.html

다운로드 받는 Maven 의 압축을 풀고 환경변수 MAVEN_HOME 을 지정합니다.


3. Maven 빌드 2차
새로 설치한 메이븐을 이용하여 Spring Roo 소스를 다시 빌드합니다.

> mvn clean install eclipse:clean eclipse:eclipse

'gpg.exe'은(는) 내부 또는 외부 명령, 실행할 수 있는 프로그램, 또는
배치 파일이 아닙니다.



뭐든 한번에 쭈욱 되지는 않나 봅니다;;;


Posted by 자수씨
, |

글 보관함

최근에 받은 트랙백