Maven
https://maven.apache.org/
설치
- JDK 설치
- 압축 파일 download
- 압축 해제
- 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
- artifactId 는 project 이름
- 폴더 이름 및 packaging 결과물 압축 파일명으로 사용됨
빌드
$ mvn compile
- 의존성 해결 및 target/classes 폴더에 빌드 결과물 생성
- src/ 폴더에 소스 빌드
테스트
$ mvn test
- src/test 폴더에 소스 빌드 및 테스트 수행
Packaging
$ mvn package
- 필요시 빌드 하고 target 폴더에 배포용 압축 파일 생성
의존성 목록 검색
아래 사이트에서 가용 라이브러리 정보 확인
https://mvnrepository.com/
- 라이브러리 검색
- 버전 클릭
- 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