build를 해도 계속 예전의 에러를 출력해내었다. 알아본 결과 gradle에 남아있는 cache 문제였다.

  1. C:\\Users\\사용자\\.gradle\\cache 내부의 폴더 삭제
  2. ./gradlew build --refresh-dependencies 혹은 재빌드

환경

java 1.7.0

maven 3.2.2

단순 참조만 필요한 경우

maven repository 가 없는 로컬 jar 파알을 maven 프로젝트에 추가 하기 위해서는 사설 repository를 만드는 방법도 있지만

다음과 같이 "dependency" 정의 시 scope 노드와 systemPath 노드를 사용하여 프로젝트에 포함된 jar 파일을 지정하여 줄 수 있다.

<dependency>
    <groupId>smack</groupId>
    <artifactId>smack-custom</artifactId>
    <version>1.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/lib/smack-custom.jar</systemPath>
</dependency>

groupId, artifactId, version 은 임의로 정의해도 무방하다

${project.basedir} 는 프로젝트의 ROOT 패스

로컬을 Repository 를 활용하는 방법

위와 같이 처리하는 경우는 문제점이 있다. scrop 의 system 이기 때문에 maven 빌드 시 해당 jar 파일이 포함되지 않는다.

이런 경우는 pom.xml 에 다음과 같이 정의하여 로컬을 repositoy로 활용하는 방법도 있다.

<dependency>
    <groupId>smack</groupId>
    <artifactId>smack-custom</artifactId>
    <version>1.0.0</version>
</dependency>
<repository>
	<id>in-project</id>
	<name>custom jars</name>
	<url>file://${project.basedir}/lib</url>
</repository>

이 때 ${project.basedir}/lib 는 maven 디렉토리 구조를 따르도록 구성해주어야 한다.

위의 예제에서는 디렉토리 및 파일명은 다음과 같이 구성해야 한다.

${project.basedir}/lib/smack/smack-custom/1.0.0/smack-custom-1.0.0.jar

만일 jenkins에서 maven 빌드를 하는 경우라면 다음과 같이 repository를 하나 더 추가해준다.

<repository>
	<id>in-project-jenkins</id>
	<name>custom jars-jenkins</name>
	<url>file://${JENKINS_HOME}/jobs/${JOB_NAME}/workspace/lib</url>
</repository>


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

[Gradle] cache 삭제  (0) 2021.08.12
[Maven] M2Eclipse project 생성 3  (0) 2015.08.26
[Maven] M2Eclipse project 생성 2  (0) 2015.08.26
[Maven] M2Eclipse project 생성 1  (0) 2015.08.26
[MAVEN] 설치 및 이클립스 연동  (0) 2015.08.17

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

MAVEN

MAVEN 설치 및 Eclipse 연동하기

MAVEN에 대해 알아보기에 앞서 먼저 설치하고 사용하는 방법을 알아보자.



MAVEN 설치

설치에 앞서 MAVEN을 다운로드 해주자. 다음 경로로 가서 받으면 된다.



메이븐 최신 버전을 받아주자. bin.tar.gz 또는 bin.zip 파일을 받아주면 된다.



메이븐은 설치를 위한 install 파일이 없기 때문에 사용할 경로에 압축을 풀어주면 바로 사용할 수 있다.



압축을 풀면 다음과 같은 폴더가 생성된다.


이제 환경변수 설정을 해주자. 



windows 탐색기나 'Win + E' 키를 이용하여 내 컴퓨터를 열어준 다음 좌측 내비게이터에서 '컴퓨터'의 속성을 클릭한다.



그러면 위와 같이 시스템 창이 나타나는데 좌측 탭에서 '고급 시스템 설정'을 클릭하고 '시스템 속성'에서 '환경 변수'를 클릭한다.

그 다음 메이븐 환경변수를 새로 만들어 주자.

'시스템 변수' 부분에서 새로 만들기를 클릭하고 다음과 같이 변수를 만들어주자.


변수이름 : MAVEN_HOME

변수 값 : MAVEN 폴더의 경로


메이븐 환경 변수를 만들었으면 Path에 메이븐 bin 폴더까지의 경로를 추가해주자.

시스템 변수 Path 항목의 맨 끝에 %MAVEN_HOME%\bin; 을 추가해주면 된다.



만약 자바 설치가 안되어 JAVA_HOME 환경 변수가 등록되어 있지 않다면 추가해주어야 한다. 등록 형식은 MAVEN_HOME 변수를 등록할 때의 형식과 동일하다. JDK를 다운로드 받아 환경변수로 등록해주면 된다.


* JDK 다운로드 경로


JAVA_HOME 은 다음과 같이 설정해주면 된다.



설정이 다 되었으면 메이븐이 잘 설치되었는지 확인해보자.

cmd 창에서 'mvn -version' 명령어를 쳐서 다음과 같이 출력되면 정상적으로 설치된 것이다.




Eclipse에 MAVEN 연동하기

이제 설치한 메이븐을 Eclipse에 연동해보자.


이클립스에서 메이븐을 사용하려면 메이븐 플러그인을 설치해주면 된다. 


Juno버전 이상의 이클립스부터 연동이 가능하다. 아래의 경로에서 해당 이클립스를 다운로드 받아주자.


다운로드가 완료되면 압축을 풀고 이클립스를 실행해주자.


메이븐 플러그인을 설치하여 이클립스에서 메이븐을 사용하기 위해선, M2E 라는 Maven Intergration을 설치해주면 된다. 


상단 메뉴에서 Help 의 Install New Software 를 클릭해보자.



아래와 같은 창이 나오는데 Work With에 M2E 를 업데이트 받을 사이트를 써주고 Add 를 눌러주면 된다.



M2E 업데이트 url은 수시로 변하는데 다음 주소에서 확인해주면 된다.


* M2E 업데이트 URL 확인 경로


Update Sites의 Latest m2e release (recommended) 에 적힌 주소를 사용하면 된다.



Add 버튼을 클릭 후 다음과 같이 M2E 업데이트 주소를 추가해주자.



주소 추가 후 다음과 같이 Maven Intergration for Eclipse가 나타나는데 체크 후 설치를 진행해주자.



Software 사용 동의 창이 나타나면 사용 동의에 체크 후 Finish를 클릭한다.



다음과 같이 설치가 진행되고 마무리된다. (설치 완료 후 이클립스를 재시작 해주자)



이클립스를 재시작했으면 M2E 의 repository를 설정해주자.


메이븐의 라이브러리 파일들을 받으면 메이븐 설치시 설정된 USER_HOME\.m2\repository 경로에 저장 되는데 이것을 수정하는 작업이다.


메이븐 디렉터리에 가보면 conf 디렉터리가 있는데 여기에 settings.xml 파일이 있다. 읽다보면 다음과 같이 localRepository 항목이 있는데 이 부분의 주석을 지우고 <localRepository> 태그 안의 경로를 수정해주면 된다.



수정 후 이클립스 메뉴의 Window > Preferences 로 들어가면 아래와 같은 창이 나타나는데 Maven 메뉴의 Installations 로 들어가보자.



Add 버튼을 눌러 메이븐의 경로를 추가하면 아래의 Global setting from installation directory 에 settings.xml 까지의 경로가 추가된다. 설정 적용을 위해 Apply 를 누르고 OK 를 눌러준다.


이클립스를 재시작한 후 이전과 같은 Window > Preferences 창에서 Maven 메뉴의 User Settings 로 들어가보자.



여기서도 User Settings 부분을 settings.xml 파일이 있는 경로로 수정해준다.

아래의 Local Repository 부분을 보면 수정된 경로가 나타난 것을 확인할 수 있다.


마지막으로 메이븐이 잘 동작하는지 테스트를 위해 현재 진행 중인 프로젝트 하나를 import 하고, 서버를 하나 만들었다. (서버는 Apache-Tomcat v6.0 을 사용하였다)


그 다음 상단 메뉴의 Project 탭에서 Build Automatically 의 체크를 해제해준다. 이클립스는 파일 수정 후 저장시 자동으로 컴파일을 하는데 MAVEN을 사용하여 유동적인 빌드를 하기위해 해제해주는 것이다. 


또한, 깔끔한 빌드를 위해 빌드 하기 전에 같은 Project 탭에 있는 Clean 을 해주는 것도 좋은 방법이다. Clean 동작은 이클립스 내의 캐시 정보나 컴파일된 .classes 파일을 정리해주는 역할을 수행한다.



이제 사용할 프로젝트를 빌드해보자.



해당 프로젝트를 마우스 우클릭하면 Run As 메뉴를 찾을 수 있다. 여기서 Maven build를 클릭하면 메이븐 빌드가 시작된다. 

Maven 메뉴도 보이는데 정상적으로 설치됬을 경우 보여지는 메뉴이다.



Edit Configuration 창이 나타나는데 Run 버튼을 클릭해주자.



콘솔 창에서 빌드가 진행되는데 마지막에 BUILD SUCCESS 라고 나타나면 빌드가 성공된 것이다. 

그 다음 서버를 실행해 주면 브라우저에서 해당 프로젝트가 정상 작동되는 모습을 확인할 수 있다.





출처 : http://freestrokes.tistory.com/


assertThat(name.length(), is(6))


assertThat 에서 지원하는 is() 메소드에서 int형을 parameter로 넣을 시, 에러나는 상황인데,

이부분은 


import static org.junit.Assert.*;

import static org.hamcrest.CoreMatchers.*;


위 패키지를 import 해주어야 한다.


Maven Spring dependency는 아래와 같이 추가하여야 한다.


JUnit - junit

<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency>



Hamcrest Core - hamcrest-core

<dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-all</artifactId> <version>1.1</version> </dependency>


<dependency> <groupId>org.hamcrest</groupId> <artifactId>hamcrest-core</artifactId> <version>1.1</version> </dependency>


maven 참고 url 

http://mavenhub.com/c/org/hamcrest/corematchers/dependency

Maven 환경 셋팅

$ cd /home/ec2-user/

이동 (홈디렉토리로 이동)


$ wget http://mirrors.gigenet.com/apache/maven/maven-3/3.1.1/binaries/apache-maven-3.1.1-bin.tar.gz

해당 디렉토리에 maven을 download 받는다.


$ sudo tar -zxvf apache-maven-3.1.1-bin.tar.gz -C /opt/

/opt/ 폴더 내에 maven 압축 파일을 푼다


ln -s /opt/apache-maven-3.0.3 /opt/maven

Symbolic Link를 걸어준다 (생략 가능)


$ sudo vi /etc/profile

환경변수를 등록하기 위해 /etc/profile을 편집기로 연다


 

M2_HOME=/opt/maven
PATH=$PATH:$M2_HOME/bin
export M2_HOME; export PATH;

변경된 /etc/profile을 수정한다


$ source /etc/profile 

변경된 시스템 적용


$ mvn -version 명령어를 입력하여 환경변수 설정이 되었는지 확인한다.


// Spring MVC 3.2.x + iBatis // log4j추가 //Oracle 11g


denodo1-spring-module.zip


http://beans9.tistory.com/103


http://antop.tistory.com/149

+ Recent posts