라벨이 #Maven인 게시물 표시

[Maven] maven wrapper란?

[Maven] maven wrapper란? Apache Maven은 자바 프로젝트에서는 없어서는 안 될 의존성 관리 도구 이를 좀 더 쉽게 최신 버전을 유지하기 위해 Maven wrapper가 나옴 Maven wrapper가 설정된 프로젝트는 Maven 설치 없이도 빌드 가능 Maven Wrapper Apache Maven을 프로젝트에서 요구하는 버전으로 유지하기 위해 사용하는 도구 만약 로컬 시스템에 mvn이 설치되어 있지 않거나 혹은, mvn 버전이 2.x대의 낮은 버전이라면, maven을 설치하는 것도 프로젝트를 설정하는데 번거로운 작업일 것 실행하기 일반적으로 Maven은 다음과 같은 명령으로 실행 함 mvn clean package 하지만, mvnw가 설정된 프로젝트의 경우 다음과 같은 명령어로 실행한다. 만약 mvnw에 실행 권한이 없다면 실행 권한을 추가해야 한다  chmod  +x mvnw ./mvnw clean package 또는 윈도우에서는 다음과 같은 명령어로 실행한다. mvnw.cmd clean install 사용되는 maven의 버전은 .mvn/wrapper/maven-wrapper.proeprties 파일에 distributionUrl  속성에 정의된다. 프로젝트 최상단 디렉토리에 mvnw, mvnw.cmd와  .mvn 디렉토리가 있다면, mvnw가 설정되어 있는 프로젝트이다. 프로젝트에 mvnw 초기 구성 그렇다면, mvnew가 구성되지 않은 프로젝트의 경우에는 어떻게 구상해야 할까? 우선 mvn 명령어가 동작하게 maven 환경을 구성해야 함 maven 구성 방법은 Apache Maven 사이트에서 직접 내려 받는 방법 등 여러가지가 있다 maven환경이 설정되었으면, 다음의 명령어를 실행 할 수 있다. mvn -N io.takari:maven:wrapper -Dmaven=3.3.3 만약 -...

[Maven] pom.xml 분석

[Maven] pom.xml 분석 Maven Maven은 자바 프로젝트의 빌드(build)를 자동화 해주는 빌드 툴이다. 즉, 자바 소스를 compile하고 package해서 deploy하는 일을 자동화 해주는 것 Maven이 참조하는 설정파일 Maven 전체를 보기보다 프로그래밍에 직접적인 연관이 있는 두 개의 설정파일을 보면 됨 1. settings.xml settings.xml은 maven tool 자체에 관련된 설정을 담당 MAVEN_HOME/conf/ 아래에 있다. MAVEN_HOME은 환경변수에 설정한 경로 Maven 자체에 설정 값을 바꾸는 일은 일단 잘 없으므로 넘어가고 기획한대로 pom.xml을 보자 2. pom.xml 하나의 자바 프로젝트에 빌드 툴로 maven을 설정했다면, 프로젝트 최상위 디렉토리 "pom.xml"이라는 파일이 생성되었을 것이다. pom.xml은 POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정하는 부분 꼭 pom.xml이라는 이름을 가진 파일이 아니라 다른 파일로 지정할 수도 있다 mvn -f ~~.xml test 그러나 maven의 원칙으로 다른 개발자들이 헷갈릴수 있으므로 그냥 pom.xml을 쓰자 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion...

[Maven] mvnw, mvnw.cmd란?

[Maven] mvnw, mvnw.cmd란? mvnw, mvnw.cmd는 Maven wrapper 이다 mvnw, mvnw.cmd를 사용하면 Maven설치와 path설정을 하지 않고 Maven프로젝트를 실행 가능 Maven build를 하기 위한 모든것이 들어가 있음 올바른 Maven 버전을 다운로드 함 mvnw -> 리눅스 버전 mvnw.cmd -> 윈도우 버전 필요한 모든 Maven 래퍼 파일을 만들거나 업데이트 하려면 다음 명령어를 사용하면 됨 mvn -N io.takari:maven:wrapper Maven에 다른 버전을 사용하려면 다음과 같이 버전을 지정 가능 mvn -N io.takari:maven:wrapper -Dmaven=3.3.3 위 두개의 명령어는  maven을 필요로 함 먄약 mvnw를 가지고 있다면 mvn명령어를 ./mvnw대신 사용 가능 maven기본 명령어 옵션을 보고 싶으면 여기 클릭 출처 https://stackoverflow.com/questions/38723833/what-is-the-purpose-of-mvnw-and-mvnw-cmd-files

[how to] Google App engine에 deploy하는 방법

[how to] Google App engine에 deploy하는 방법 공통 터미널 명령어 실행하는 디렉토리를 잘 설정해야 함 자바 Maven활용시 app.yaml 파일에서 service : {name} 에  알맞은 name쓰기 APISERVER 디렉토리에 있을 수도 있음 github에서  master를 clone한 후 (Opitional) gcloud auth list 확인후 만약 auth가 다르면 바꾸기  gcloud auth application-default login  Y입력후 바꾸기 gcloud config list project확인 후 만약 project가 다르면 바꾸기 mvn clean package -Dmaven.test.skip=true mvn appengine:deploy -Dmaven.test.skip=true vue.js NPM활용시 디렉토리 app.yaml이 있는 곳에서 진행 npm install npm run build gcloud app deploy 참고 https://cloud.google.com/sdk/gcloud/reference/app/deploy

[Maven] maven 프로젝트 생성하기

이미지
[Maven] maven 프로젝트 생성하기 JAVA를 설치 한 후 진행해야 함 tool : Visual studio code2 Run -> Test -> Package -> Deploy순서로 진행하면 무방 1. maven 버전 확인 mvn --version  해당 프로젝트 명칭(컴포넌트 명칭), groupId 범위 내에서 유일해야함 2. 새 프로젝트를 만들기 위해서 아래의 명령어 사용 mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false DgroupId=com.mycompany.app : GroupId를 지정 groupID : 프로젝트를 모든 프로젝트 사이에서 고유하게 식별 해 주는 것. groudId에는 네이밍 스키마를 적용하도록 해야 함 관례적으로 회사 도메인명(google.com, naver.com)을 거꾸로한 명칭을 사용 com/mycompany/app 아래에 App.java생성 DartifactId=my-app : artifactId를 지정 artifactID : 버전 정보를 생략한 jar파일의 이름 해당 프로젝트 명칭(컴포넌트 명칭), groupId 범위 내에서 유일해야 함 이름은 원하는거로 아무거나 소문자를 이용해서 작성 만약 써드 파티 jar파일이라면 할당된 이름을 사용해야 함  현재 디렉토리에 my-app이라는 폴더가 생김 DarchetypeArtifactId : 프로젝트의 초기 구조를 생성하는 archetype 템플릿 아디펙트 ID를 지정한다. 대부분의 경우 ArtifactID를 지정하면 그것으로 어떤 템플릿인지 특정 가능 기본은 maven-archetype-quickstart archetypeCatalog ex) 간단한 웹 프로젝트를 명...

[Maven] Lifecycle?? 라이프 사이클??

이미지
[Maven] Lifecycle Maven에서는 clean , build , site 의 세가지 Lifecycle을 제공 compile, test, package, deploy 등의 과정은 build Lifecycle에 속한다. Maven은 모든 빌드 단위에 대한  Lifecycle이 예약되어 있어서 개발자가 임의로 변경 할 수 없다. 각 LifeCycle은 순서를 갖는 단계(phase)로 구성된다. clean : 빌드 시 생성되었던 산출물을 삭제 target폴더 자체가 사라짐 default : 프로젝트 배포절차, 패키지 타입별로 다르게 정의됨 site : 프로젝트 문서화 절차 Phase Phase는 Build Lifecycle의 각각의 단계를 의미  Phase는 특정 순서에 따라서 goal이 실행되도록 구조를 제공 함. Phase간에는 의존 관계가 있다. ex) package phase가 수행되기 위해서는 이전 phase가 순서대로 수행된 다음에 수행 Phase와 Goal의 관계 Maven에서 제공하는 모든 기능은 플러그인 기반으로 동작한다. Maven에서 기본으로 제공하는 Phase를 실행하면 해당 Phase와 연결된 플러그인의Goal이 실행된다. Plugin Goal Maven에서 플러그인을 실행할 때 ' 플러그인 이름: 플러그인 지원 골 '형식으로 실행할 기능을 선택 할 수 있음 ex) mvn compiler:compile은 'compiler'플러그인에서 'compile'기능(goal)을 실행 Maven 디폴트 Phase와 Goal 여러가지만 있지만 몇가지만 정리합니다.. package package를 실행하면 compile, test-compile, test순으로 실행된 다음 jar, war파일이 target 디렉토리에 생성됨 install 로컬 repo에 패키지를 배포 ...

[Maven] dependency와 plugin태그 차이 in pom.xml

[Maven] dependency와 plugin태그 차이 in pom.xml pom.xml을 보다보니까 dependency와 plugin의 차이가 궁금해졌다..... 그래서 구글에 검색을 해보니.... 공통점 둘다 Jar files이다. Pugin 대부분의 실행은 plugin을 가지고 실행한다.  Dependency Dependecy는 프로젝트가 의존할 클래스의 패키지이다. jar, war등등으로 가능 Dependecy는 태스크가 실행되는동안 classpath에 추가될 Jar file이다 참고 : https://stackoverflow.com/questions/11881663/what-is-the-difference-in-maven-between-dependency-and-plugin-tags-in-pom-xml

[Maven] 플러그인(plug in)이란?

이미지
[Maven]  플러그인(plug in) 플러그인(plug in)이란 ? 일반적인 소프트웨어의 일부 브라우저에서 취급할 수없는 인터넷 상의 콘텐츠를 취급한다. 웹 브라우저의 일부로서 쉽게 설치되고 사용될 수 있는 프로그램 주요 플러그인(plug in) Adobe Flahs Windows Media Player Java Quicktime Abode Reader mvn에서 플러그인 이란? 메이븐은 플러그인을 구동해주는 프레임워크(plugin execution framework)이다. 메이븐은 여러 플러그인으로 구성되어 있으며, 각각의 플러그인은 하나 이상의 goal(명령, 작업)을 포함하고 있다. Goal은 Maven의 실행 단위이다. 플러그인과 골의 조합으로 실행한다 ex) mvn <plugin>:<goal> = mvn archetype:generate 메이븐은 여러 goal을 묶어서 lifecycle phases로 만들고 실행한다. ex) mvn <phase> = mvn install 이렇게 실행하면 install단계를 모두 실행한다. 플러그인 목록 참고 : http://sjh836.tistory.com/131

[Maven] groupID, artifactID, version

[Maven] groupID, artifactID, version groupID 프로젝트를 모든 프로젝트 사이에서 고유하게 식별 해 주는 것 . groudId에는 네이밍 스키마를 적용하도록 해야 함 groudID는 하나만 존재해야함 하위 그룹은 얼마든지 추가 가능 ex) org.apache.maven , com.samsung.sf.cloud artifactID  버전 정보를 생략한 jar파일의 이름 이름은 원하는거로 아무거나 소문자를 이용해서 작성 만약 써드 파티 jar파일이라면 할당된 이름을 사용해야 함 ex) maven, dashboard-api version 숫자와 점으로 이루어진 일반적인 버전 형태 Snapshot이란 그 버전이 이루어지기전(under version)이라고 보면 됨.. 아직 release되기 않은 것 ex) 1.0, 1.1 출처 https://johngrib.github.io/wiki/groupId-artifactId/

[Maven] package와 install의 차이

[Maven] package, install package 소스 코드를 컴파일하고 패키지한다. ex) 만약 pom.xml에 jar파일로 패키지하라고 하면, 패키징할때 jar파일로 만들고 타겟 디렉토리에 만든다 . install 로컬 repo에 패지지를 배포 컴파일하고, 패키지한다. package랑 다른 점은 local repo에 패키지를 생성해서, local repo에 있는  다른 프로젝트들이  접근이 가능하도록 함 mvn clean package mvn clean install 두 명령어 모두 target folder를 제거 mvn appengine : devserver Maven 설치 및 app을 실행 명령어