2018년 3월 19일 월요일

maven


Maven

https://maven.apache.org/

설치

  1. JDK 설치
  2. 압축 파일 download
  3. 압축 해제
  4. PATH 에 bin 폴더 추가

프로젝트 생성


$ mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false


  • Architecture type 표 (-DarchetypeArtifactId 값)
  • groupId 및 artifactId 는 본인이 지정 
    • groupId 는 package 
      • 기본 package 생성에 사용됨
    • artifactId 는 project 이름
      • 폴더 이름 및 packaging 결과물 압축 파일명으로 사용됨

빌드


$ mvn compile
  • 의존성 해결 및 target/classes 폴더에 빌드 결과물 생성
  • src/ 폴더에 소스 빌드

테스트


$ mvn test
  • src/test 폴더에 소스 빌드 및 테스트 수행

Packaging


$ mvn package
  • 필요시 빌드 하고 target 폴더에 배포용 압축 파일 생성

의존성 목록 검색


아래 사이트에서 가용 라이브러리 정보 확인

https://mvnrepository.com/

  1. 라이브러리 검색
  2. 버전 클릭
  3. maven dependency xml 복사하여 pom.xml 에 붙여 넣기

Java version


maven-compiler-plugin



    <project>
      ...
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
              <configuration>
                <!-- put your configurations here -->
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
      ...
    </project>


예) java 1.8 설정

    <project>
      ...
      <build>
        <pluginManagement>
          <plugins>
            <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.8.0</version>
              <configuration>
                <source>1.8</source>
                <target>1.8</target>
              </configuration>
            </plugin>
          </plugins>
        </pluginManagement>
      </build>
      ...
    </project>


copy dependencies


Dependency 라이브러리들을 복사하여 실행할 때 class path 에 추가

예) pom.xml 에 plugin 추가

<project>
...
  <build>
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-dependency-plugin</artifactId>
          <version>3.1.1</version>
          <executions>
            <execution>
              <id>copy-dependencies</id>
              <phase>package</phase>
              <goals>
                <goal>copy-dependencies</goal>
              </goals>
              <configuration>
                <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                <overWriteReleases>false</overWriteReleases>
                <overWriteSnapshots>false</overWriteSnapshots>
                <overWriteIfNewer>true</overWriteIfNewer>
              </configuration>
            </execution>
          </executions>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>


dependency:copy-dependencies target 수행을 통해 의존성 라이브러리들이 target/dependency 에 복사

$ mvn clean dependency:copy-dependencies package

실행 시 -cp (class path) 에 라이브러리 경로를 추가

$ java -cp target/$app-name.jar:target/dependency/$dependency1.jar com.app.Main


댓글 없음:

댓글 쓰기