반응형

 

일반적으로는 리눅스에서 빌드를 하는 경우가 많이는 없다.

 

보통은 git과 jenkins를 통해 빌드 배포하고 있기 때문에 하지만 내가 가지고 있는 프로젝트중에

 

hadoop mapreduce작업을 해서 cassandra에 밀어 넣는 처리를하는 경우가 있다.

 

이 경우 hadoop관련 jar파일이 필요한데 pom.xml  dependency 경로가 서버내의 cloudera경로에 걸려있어 

 

서버내에서 maven 빌드를 진행해주어야만 하는 경우가 있었다.(물론 해당 jar파일을 공통 레파지토리나 프로젝트내에 넣어 묶을 수 있긴한데...)

 

먼저 리눅스에서 maven 빌드를 실행하려면 서버에 maven이 깔려있는지 확인이 필요한다.

 

 

> mvn -v

 

깔려있지 않다면 먼저 maven 설치가 필요하다.

 

그리고 빌드를 해서 jar파일을 만들고자하는 프로젝트 경로로 이동해서 pom.xml이 위치한 곳에서 

 

mvn package를 실행해주면 된다. (profile이나 다른 옵션을 주는 경우 해당 명령어에 -P 등을 추가해주자)

 

 

> mvn package (pom.xml이 위치하고 있는 곳에서)

 

 

이렇게 빌드를 하게되면 필요한 dependency들을 다운받아와 jar를 만드는 것을 확인할 수 있다.

 

 

 

반응형

'Programming > Maven' 카테고리의 다른 글

mvn package시 test 코드 건너뛰기  (0) 2018.01.31
MAVEN과 ANT 비교  (0) 2017.05.10
반응형


maven으로 빌드시 정상적으로 동작하지 않는 test케이스들로 인해 실패하는 경우가 많다.


테스트케이스를 작성한지 오래됬거나 변경된 정보들로 인해 성공못하는 경우가 빈번하다.


물론 가장 좋은 케이스는 테스트케이스들도 같이 꾸준히 관리를 해주는 것이지만


그게 쉬운일이던가???....


무튼 이런 경우 보통 jenkins 등 ci 툴에서도 빌드시 skip test 명령어를 명시적으로 넣어주곤 한다.


방법은 세 가지다.


첫 번째, 메이븐 빌드 실행 커맨드 라인에 다음과 같이 실행


package -Dmaven.test.skip=true


두 번째, 메이븐 빌드 실행 커맨드 라인에 다음과 같이 실행

package -DskipTests


세 번째, 커맨드 라인에 명령어를 명시적으로 주어서 사용하고 싶지 않은 경우 (pom.xml plugin 추가)

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <configuration>
    <skipTests>true</skipTests>
  </configuration>
</plugin>


위와 같이 세 가지 방법으로 사용할 수 있고 나의 경우는 두 번째 방법을 스프링 부트내에서 자주 사용해 packing하곤 한다.





반응형

'Programming > Maven' 카테고리의 다른 글

리눅스 환경에서 mave으로 빌드하기(mvn package)  (1) 2018.05.09
MAVEN과 ANT 비교  (0) 2017.05.10
반응형


MAC 터미널에서 혹시나 메이븐(maven)을 통해 빌드해야하는 경우가 있을 경우 메이븐(maven)을 설치해주어야 한다.

밑의 url에 들어가 tar.gz 파일을 다운받아서 압축을 풀어준다.

http://maven.apache.org/download.cgi

그 후 mvn 명령어로 손쉽게 메이븐(maven)을 사용하기 위해 환경변수를 설정해준다.

vi ~/.bash_profile

vi로 열어서 압축을 푼 곳의 디렉토리 위치를 설정해준다.

#path setting
export M2_HOME=/Users/nhnent/Documents/apache-maven-3.5.2   (본인의 압축 푼 경로에 맞게!!!)
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

저장 후 설정 변경을 위해 다음 명령을 실행한다.

source ~/.bash_profile

실행 후 echo $PATH 를 해보면 본인의 PC에 설정된 path들의 리스트가 출력된다.

해당 리스트에 메이븐(maven) PATH가 정상적으로 추가되었다면 mvn -version을 통해 확인해 볼 수 있다.

mvn -version 명령을 내렸을 경우 이런 버전을 나타내는 stdout이 출력되지 않았다면 정상적으로 설치되지 않은 경우이기 떄문에

설치 경로 및 환경변수를 다시 한 번 확인이 필요하다.


반응형
반응형

스프링부트(springboot)로 카산드라 데이터 모니터링 하는 프로젝트 작업 중  java.lang.NoClassDefFoundError:org/springframework/data/cassandra/mapping/UserTypeResolver 과 같은 에러가 발생해 한참을 해맸다.



Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/data/cassandra/mapping/UserTypeResolver

at java.lang.Class.getDeclaredMethods0(Native Method)

at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)

.

.

생략

Caused by: java.lang.ClassNotFoundException: org.springframework.data.cassandra.mapping.UserTypeResolver

at java.net.URLClassLoader.findClass(URLClassLoader.java:381)

at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)

at java.lang.ClassLoader.loadClass(ClassLoader.java:357)


일단 해결은 pom.xml 의 <parent>부분의 버전을 수정하여 해결하였다.

<parent>

         <groupId>org.springframework.boot</groupId>

   <artifactId>spring-boot-starter-parent</artifactId>

      <version>1.5.6.RELEASE</version>

        <!-- <version>1.2.3.RELEASE</version> -->

              <relativePath/> <!-- lookup parent from repository -->

</parent>


버전의 1.5.6버전을 하위 dependency에서 사용하는 스프링부트 버전과 맞춰주니 해결되었다. (1.5.6-> 1.2.3)


<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>

<java.version>1.8</java.version>

<spring-boot.version>1.2.3.RELEASE</spring-boot.version>

<spring-data-cassandra.version>1.2.0.RELEASE</spring-data-cassandra.version>

<spring-cql.version>1.2.0.RELEASE</spring-cql.version>

<datastax.cassandra.version>2.1.7</datastax.cassandra.version>

</properties>


버전이 맞지않으면 예상치 못한 예외가 발생한다. 디텍팅하기도 너무 힘들뿐도로 원인파악이 너무 힘들기 때문에 메이븐 설정을 다른 프로젝트 등에서 가져다 


사용 할때는 버전을 꼭 참고하여 사용하도록 하자. 무작정 사용하는 ctrl+c, ctrl+v는 재앙을 가져올지니...

반응형

+ Recent posts