728x90


이제 mave을 설치했다면 maven으로 간단한 프로젝트를 만들어보자.

근데 사실 maven의 명령어로 maven 프로젝트를 만드는것은 그리 간단하지만은 않다.

제일 간단하게 만드는 방법을 일련의 과정을 통해서 보도록 하자.


mvn archetype:generate


maven으로 프로젝트를 만들때는 위와 같이 입력한다.

이렇게하면 프로젝트를 쉘과의 대화형으로 만들게 된다. 이를 interactive mode라고 한다.

즉 위는 interactive mode가 되는데 이 때조금 기다려야한다.

기다리면 아래와 같이 뜬다.


우리는 archetype을 정하지 않았기에 자동으로 maven-archetype-quickstart가 선택된다.


http://maven.apache.org/archetypes/


archetype이란 아카이브 타입의 줄임말로 이 해당 프로젝트의 목적이 뭐냐고 묻는것이다.

해당 archetype의 종류는 위 사이트에서 볼수 있으나 우리는 퀵스타트이다.

퀵스타트는 일반적으로 jar를 만드는걸 목표로 한다. 즉 우리는 그냥 만들면 jar파일을 만드는걸 목표로 해서 maven을 사용하게 되는 것이다.


일단 가장 먼저 quickstart solution의 버전을 사용하게 된다.

아무것도 안적고 enter를 누르면 최신버전이 선택된다.(지금의 경우 최신버전은 1.3)


그 다음은 groupId를 선택한다.

그룹 아이디는 해당 프로젝트 쉽게 생각하면 메인 패키지라고 생각하면된다.

패키지에서 쓰는 네이밍 룰을 써서 만들자.


그 다음은 artifactId를 선택한다.

artifactId는 해당프로젝트의 이름을 적어야한다. 보통 네이밍은 파스칼캐이싱으로 선택한다.

캐이싱에 대해서 모른다면 여기를 참조하자.


그 다음은 버전을 선택해준다.

버전을 총 3개의 부분으로 나눠지는데 major,minor,incremental-qualifier로 나뉘는데

위의 경우 incremental번호는 없다. 보통 qualifier를 붙는다면 incremental를 적지 않는 경향이 있다.

snapshot은 릴리즈가 아니다, 즉 아직 실험단계라는걸 의미한다.

아무것도 선택하지않으면 1.0-SNAPSHOT 모드가 된다. 


패키지는 아까적은 groupId가 디폴트가된다.

물론 바꿔줄 수도 있다.


마지막으로 여러분이 한대로 쓸건지 물어본다. 그냥 엔터누른다.


그럼 이제 빌드가 완성된다.


디렉터리는 위와 같다.

maven에서는 무조건 위와 같은 디렉터리 구조가된다.

즉 src와 test의 위치는 고정이고 그 안에는 java파일이 반드시 들어간다.

이는 강제이며 바꿀수가 있긴하지만 100이면 100바꾸지 않는다 즉 


pom.xml

src/main/java

src/test/java


위의 파일들은 강제되게 된다.

pom.xml은 이 프로젝트에 대한 총체적인 내용이 적혀있다.

이는 ant에서 build.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>4.0.0</modelVersion>

<groupId>net.theceres</groupId>
<artifactId>MavenTest</artifactId>
<version>1.0-SNAPSHOT</version>

<name>MavenTest</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.0.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>

먼저 pom.xml을 보면 위와같이 어지럽게 적혀있다.

지금 다 알필요는 없고 상위 몇개를 잘라서 보자.


modelVersion - 버전에 따라 pom.xml의 형식이 약간다르다. 그러나 우리는 4.0.0을 사용할 것이므로 크게 생각할 필요는 없다.

groupId - 자바에서는 패키지가 일종의 그룹의 역활이다. 즉 패키지 명이라고 생각해도 된다. 자바에서는 네임스페이스가 없기에 패키지가 그 역활을 대신하기 때문이다.

artifactId - 해당 프로젝트의 이름이라고 생각하면 편하다. 

version - 해당 프로젝트의 버전을 의미한다. 여러분이 편한대로 적으면 된다.

name - 해당 프로젝트의 이름, 그냥 두면 artifactId로 자동으로 지정된다.


properties - maven폼에서 쓸 수 있는 변수라고 생각하면 된다.

dependencies - maven에서 사용하는 다른 프로젝트라고 생각하면된다. 기본적으로 테스팅을 위해서 junit이 포함된다.

build - maven을 컴파일 하고 빌드하는데 필요한 작업들을 기술한다.


자 그럼 자동 생성된 main함수를 한번 봅시다.

package net.theceres;

/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
System.out.println( "Hello World!" );
}
}

Hello World가 자동선언되어있다.

그럼 maven빌드를 실행해보자.



명령어는 일반적으로 mvn install이다.

결과를 보자.



maven의 결과는 target에 저장된다. 보면 jar파일이 만들어 진걸 알 수있다.

일반적으로 maven의 결과는 jar혹은 war가 되며 jar를 사용해서 쓰면된다.


그냥 아무것도 안하고 만든 jar파일은 일반적인 라이브러리파일이 된다.

즉 실행할수 없다. 우리가 기껏만들어 봐야 실행이 안된다는게 슬프다.

그러나 일반적으로 대부분의 자바프로젝트는 실행되게 하기 위해서 만드는건 아니다.

물론 실행이 불가능한건 아니고 추후에 다루도록 하겠다.




+ Recent posts