프로그래밍/정리완료

Pom.xml 총 정리

즐겁게 하하하 2023. 10. 26. 23:12
728x90

 

빌드 툴을 Maven으로 사용한다면 프로젝트 생성 시 pom.xml 파일이 생겨있을 것이다.

POM은 "Project Object Model"의 약자로, 프로젝트의 다양한 정보를 처리하기 위한 객체 모델이다.

pom.xml 파일에는 프로젝트 관리 및 빌드에 필요한 환경 설정, 의존성 관리 등의 정보들을 기술한다.

Maven프로젝트에 생성된 pom.xml 파일

 

 

POM.XML의 최소한의 구성


<project>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.example</groupId>
    <artifactId>maven-pom-project</artifactId>
    <version>1.0-SNAPSHOT</version>
    
    <!-- 생략가능 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.1</version>
        <relativePath>../testb/pom.xml</relativePath> <!-- lookup parent from repository -->
    </parent>
</project>

project, modelVersion, groupId, artifactId, version 이 5가지는 메이븐이 허용한 최소값 이라고 한다.

각 요소별로 의미하는것은 아래로 내려가 POM.XML의 기본 속성에서 알아보도록 하자.

 

 

POM.XML의 기본 속성 태그


<project></project>

<project> 프로젝트의 정보를 기술

 

<modelVersion>4.0.0</modelVersion>

<modelVersion> 4.0.0이라고 적혀있는 이것은 maven의 pom.xml의 모델 버전이다.

Maven 1.x 버전들은 3.0.0 모델을 사용하였지만, Maven 2.x , Maven 3.x 는 4.0.0버전을 사용합니다.

 

<groupId>org.example</groupId>

<groupId>  프로젝트를 생성한 그룹명으로 제작자와 회사, 단체 등을 식별하기 위한 것이다.

 

<artifactId>maven-pom-project</artifactId>

<artifactId>  버전정보를 생략한 jar 파일의 이름이다.

프로젝트 빌드 시 파일의 대표 이름. groupId내에서 유일해야 한다.

이름 작성시 몇가지 규칙이 있는데 소문자로만 작성, 특수문자 사용하기, 버전 정보를 생략한 jar파일의 이름이 들어간 형태이다.

 

<version>4.0.0</version>
<version>${java.version}</version>

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java-version>1.8</java-version>
    <org.springframework-version>5.3.16</org.springframework-version>
    <org.springframework-security-version>4.2.4.RELEASE</org.springframework-security-version>
    <servlet.version>3.1.0</servlet.version>
    <org.aspectj-version>1.6.10</org.aspectj-version>
    <org.slf4j-version>1.6.6</org.slf4j-version>
</properties>

<version>  명시된 그룹의 artifact버전을 표기한다. 숫자와 점으로 이루어진(4.0.0) 일반적인 버전 형태를 사용한다. 

 

<properties>
	<spring.maven.artifact.version>4.3.16.RELEASE</spring.maven.artifact.version>
</properties>

<properties> pom.xml에서 사용하는 속성 값 들을 정의하고 pom.xml 내 어디서든 사용할 수 있다. ( 위 사진의 properties 참고 )

 

<packaging>jar</packaging>

<packaging> 프로젝트를 어떤 형태로 패키징할지 지정한다.(jar, war, zip 등...)

 

<url>http://www.egovframe.go.kr</url>

<url> 프로젝트와 관련된 Web사이트의 주소이다.

 

 

 

<dependencies>와 <dependency>


<dependencies> 태그

<dependencies>
	<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>${spring.maven.artifact.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.maven.artifact.version}</version>
	</dependency>
</dependencies>

<dependencies> 는 pom.xml 태그중 최상위 속성을 가진 태그중 하나이며, 프로젝트와 의존관계에 있는 라이브러리들을 모아 관리하는 곳이다 . 각각의 의존 라이브러리들의 정보는 <dependency> 태그를 사용하여 작성한다.  참고로 <dependencies> 태그는 라이브러리들 을 모아서 관리하는곳이기에 <dependency> 태그를 사용하여 필요한 라이브러리들을 전부 기술하면된다.

 

아래의 코드는 properties에 정의한 속성 값을 사용하는 방법으로 

${spring.maven.artifact.version} 다음과 같이 사용하면 된다.

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.maven.artifact.version}</version>
</dependency>

 

<dependency> 태그 와 <scope> 태그

<dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
</dependency>

<dependency> 태그는 라이브러리의 정보를 기술한다.

<scope> 태그는 이 라이브러리가 이용되는 범위를 지정하는 것이다.

JUnit 라이브러리는 테스트를 위한 기능을 제공하는 Java라이브러리인데

위의 코드를 보면 <scope>를 test로 지정해둔것을 볼 수 있다.

쉽게 생각하면 어떤 때 사용하는지를 기술하는 것이다. 나는 JUnit 라이브러리를 test할때에만 사용하겠다 라고....

 

 

 

<profiles> 와 <profile> 태그


<profiles>

<profiles> 태그는 <profile>태그들을 정의하는 공간이다. <profile>태그들을 모두 <profiles>태그 안에 기술하면 된다.

 

<profile>

<profile> 태그는 특정 Build 환경에 맞춰 리소스의 재배치 및 환경에 대한 옵션들을 설정하여 실행할 수 있게 하는 태그이다.

예를들어 빌드환경을 3단계로 나누어 개발 / 테스트/ 운영 시스템 단위로 구분한다고 했을 때,

각 단계마다 필요로 하는 설정 정보나 리소스 파일들을 배치시켜주는 역할을 한다.

 

<profile>태그 안에서 사용하는 속성들을 알아보자

<profiles>
    <profile>
      	<id>local</id>
      	<activation>
        	<activeByDefault>true</activeByDefault>
      	</activation>
      	<properties>
           <environment>local</environment>
      	</properties>
    </profile>
    <profile>
      	<id>test</id>
      	<properties>
        	<environment>test</environment>
      	</properties>
      	<build>
            <plugins>
               <plugin>
                  <groupId>com.github.eirslett</groupId>
                  <artifactId>frontend-maven-plugin</artifactId>
                  <version>1.6</version>
               </plugin>
            </plugins>
    	</build>
    </profile>
</profiles>

위의 코드는 간단하게 local 환경과 test환경으로 구분해둔 코드이다.

<id>local</id>

<id> 태그는 profile의 id를 정의할 수 있다. 개발(local), 테스트(test), 운영(real)

<activation>
	<activeByDefault>true</activeByDefault>
</activation>

<activation> 태그는 Build시 활성화 정보 여부를 기술한다.

간단히 말해 아무것도 명시하지않고 Build하였을 때에 어떤 profile이 활성화 될지 기술하는 곳이다.

<activation>태그안에 <activeByDefault>태그를 사용하여

빌드시 profile을 명시하지 않았을때에 기본적으로 활성화 될 profile을 기술하여 주면 된다.

 

 

 

Build수행을 위한 pom.xml 태그와 설정


빌드구성은 pom.xml파일에서 <plugin>설정에 의해서 실행되며 <build>, <plugins>와 <plugin>에 대해서 살펴보자.

Maven에서 기본 plugin들의 goal 바인딩을 통해 여러 phase가 수행할 행동을 정의하고, 이 phase의 순서로 작업이 진행된다.

따라서 빌드/배포를 위한 Maven pom.xml파일을 구성 한다는 말은 작업을 위해 여러 plugin의 goal을 원하는 phase에

바인딩 하는 일이라고 말 할수있다고 한다.

 

Maven은 플러그인을 구동해주는 프레임워크(plugin execution framework)이다.

모든 작업은 플러그인에서 수행한다고 한다.

내가 플러그인을 이해한 바로는 라이브러리에 집합체 라는걸로 이해하였고, 라이브러리를 넣었다 뺏다하면서 필요한 기능들을 넣어 확장하고 필요없는 기능은 라이브러리를 빼서 응용프로그램의 크기를 줄인다는 것 으로 이해하였다.

 

<goal>
어떤 작업을 수행할 지 지정할 수 있다. 몇몇 goal들은 이미 내장되어 있어 Maven이 알아서 작업을 수행해준다.

Phase
라이프사이클의 단계를 의미한다. Phase가 실행되면 해당 Phase와 연결된 플러그인 goal이 실행된다.

 

<build>태그의 구성

  • build태그 안쪽으로 다수의 플러그인들을 설정할 수 있다.
  • pom.xml파일 내에서 여러 플러그인들의 실행에 관련된 설정들을 지정할 수 있다.
<build>
    <plugins>
      <plugin>
        <groupId>com.github.eirslett</groupId>
        <artifactId>frontend-maven-plugin</artifactId>
        <version>1.6</version>

        <configuration>
          <workingDirectory>frontend</workingDirectory>
          <nodeVersion>v8.11.1</nodeVersion>
          <npmVersion>5.6.0</npmVersion>
        </configuration>

        <executions>
          <execution>
            <id>install-node-and-npm</id>
            <goals><goal>install-node-and-npm</goal></goals>
            <phase>generate-resources</phase>
          </execution>

      </plugin>
    </plugins>
</build>

 

<plugins>태그의 구성

  • 플러그인의 설정을 하는 태그로 <groupId>, <artifactId>, <version>으로 구성된다.
  • <plugin>은 실행 시 옵션인 <configuration>과 언제 실행될지에 대한 설정인 <execution>으로 구분된다.
  • Maven에서 제공하는 기본 플러그인 메뉴얼 : https://maven.apache.org/plugins/#available-plugins

 

<configuration>

  • execution 설정이나 기본 바인딩등으로 플러그인의 goal이 실행될 때의 실행옵션을 정한다.
  • 플러그인 바로 밑에 구성된 <configuration>은 해당 플러그인내 여러 goal들의 수행시 기본 옵션이며,
  • 이와 반대로 <excution>하위에 있는 옵션은 해당 execution 내에서만 유효하며, default configuration을 오버라이딩 한다.
  • configuration에 들어가는 옵션들은 각각의 goal에서 사용하는 옵션인지 여부에 관계없이 설정 해 놓기만 하면, goal이 수행될 때, 자신의 옵션에 해당되는 값들을 알아서 찾아서 반영한다고 한다.

 

<execution>

  • execution은 해당 플러그인이 언제, 어떤 configuration으로 실행될지에 대해 기술하는 곳이다.
  • execution은 플러그인 goal을 Maven의 phase에 바인딩하는 설정이라고 할 수 있다고 한다.
  • <goal> 플러그인의 어느 goal을 실행할 것인지 지정한다.(플러그인에는 여러개의 goal이 있을수 있다)
  • <phase> goal을 어느 Phse에 바인딩 할 지 지정한다.
  • <id> 해당 <execution>설정에 대한 식별자이다.

 

 

<distributionManagement> 와 settings.xml 이용하기


회사에서 내부적으로 사용할 Maven 리포지토리가 필요한 경우가 있다. 
예를 들어, 오라클 JDBC 드라이버는 Maven 중앙 리포지토리에 존재하지 않기 때문에 
모든 개발자들이 로컬 리포지토리에 따로 등록해주는 수고를 해야 하는데, 
내부용 Maven 리포지토리를 만들어서 그곳에 오라클 JDBC 드라이버를 등록하면 
한 사람만 내부용 리포지토리에 등록해주는 수고를 해 주면 나머지 개발자는 편하게 
오라클 JDBC 드라이버를 Maven의 depedency로 등록해서 사용할 수 있게 된다.

Nexus를 설치하면 최초에 다음의 리포지토리를 제공해준다.
  - Releases: 내부에서 만들어진 모듈의 정식 버전을 등록할 때 사용 (releases)
  - Snapshots: 내부에서 만들어진 모듈의 스냅샵 버전을 등록할 때 사용 (snapshots)
  - 3rd party: 외부 업체 제공 모듈을 등록할 때 사용 (예를 들어, 오라클 JDBC 드라이버 등) (thirdparty)
  - 기타 Central, Apache Snapshots, Codehaus Snapshots 등 외부 리포지토리 연결 (central 등)
  - 그리고, 이들을 하나처럼 보이게 해 주는 Public Repositories (public)

릴리즈하기 위한 Maven 설정
내가 만든 Maven 프로젝트를 리포지토리에 배포하려면 다음의 세 가지 작업을 해 주어야 한다.

1. pom.xml 파일에 배포 대상 리포지토리 설정하기
2. settings.xml 파일에 배포 대상 리포지토리 연결 정보 설정하기
3. 배포하기

먼저 pom.xml 파일에 다음과 같이 <distributionManagement> 태그를 등록한다.

<distributionManagement>
    <repository>
        <id>central</id>
        <name>Central</name>
        <url>${env.MAVEN_REPO_URL}</url>
    </repository>
</distributionManagement>
두 번째로 settings.xml 파일에 pom.xml 파일에 설정한 리포지토리에 연결할 때 사용할 정보를 추가해주는
것이다. settings.xml 파일은 여러 위치에 만들 수 있는데 필자의 경우
[홈디렉토리]/.m2 디렉토리에 주로 만들어준다. 
아래 코드는 settings.xml 파일의 작성 예이다.

<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
    xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <servers>
    <server>
      <id>central</id>
      <username>${env.MAVEN_REPO_USER}</username>
      <password>${env.MAVEN_REPO_PASS}</password>
    </server>
  </servers>
</settings>

보통 settings.xml 파일은 .m2 폴더 안에 두고 사용한다.

conf.zip
0.01MB

위 폴더를 .m2 안에 풀어놓고 settings.xml 파일을 열어서 기본 Repository 경로를 작성해 주고

<localRepository>D:\XXXXX\.m2\repository</localRepository>

이클립스에서 .m2 설정을 settings.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/maven-v4_0_0.xsd">
        <modelVersion>4.0.0</modelVersion>
	<groupId>com.testCompany</groupId>
	<artifactId>testProject</artifactId>
	<name>testProject</name>
	<packaging>war</packaging>
	<version>1.0.0-BUILD-SNAPSHOT</version>
	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
		<java-version>1.8</java-version>
		<org.springframework-version>5.3.16</org.springframework-version>
		<org.springframework-security-version>4.2.4.RELEASE</org.springframework-security-version>
		<servlet.version>3.1.0</servlet.version>
		<org.aspectj-version>1.6.10</org.aspectj-version>
		<org.slf4j-version>1.6.6</org.slf4j-version>
	</properties>
	
      <distributionManagement>
          <repository>
              <id>central</id>
              <name>Central</name>
              <url>${env.MAVEN_REPO_URL}</url>
          </repository>
      </distributionManagement>
    
	<dependencies>
		<dependency>
  			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.3.16</version>
		</dependency>
		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>${org.springframework-version}</version>
			<exclusions>
				<!-- Exclude Commons Logging in favor of SLF4j -->
				<exclusion>
					<groupId>commons-logging</groupId>
					<artifactId>commons-logging</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${org.springframework-version}</version>
		</dependency>

		<!-- AspectJ -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${org.aspectj-version}</version>
		</dependency>

		<!-- Logging -->
		<dependency>
		    <groupId>org.lazyluke</groupId>
		    <artifactId>log4jdbc-remix</artifactId>
		    <version>0.2.7</version>
		</dependency>
		<!--dependency>
			<groupId>org.slf4j</groupId>  
			<artifactId>slf4j-log4j12</artifactId>  
			<version>${org.slf4j-version}</version>
		</dependency-->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>${org.slf4j-version}</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${org.slf4j-version}</version>
			<scope>runtime</scope>
		</dependency>
		<!-- log4j-core --> 
		<dependency> 
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.17.0</version>
		</dependency> 
		<!-- log4j-api --> 
		<dependency> 
			<groupId>org.apache.logging.log4j</groupId> 
			<artifactId>log4j-api</artifactId> 
			<version>2.17.0</version> 
		</dependency> 
		<!-- log4j-slf4j-impl --> 
		<dependency> 
			<groupId>org.apache.logging.log4j</groupId> 
			<artifactId>log4j-slf4j-impl</artifactId> 
			<version>2.17.0</version> 
		</dependency> 
		<!-- log4j --> 
		<dependency> 
			<groupId>log4j</groupId> 
			<artifactId>log4j</artifactId> 
			<version>1.2.17</version> 
		</dependency>		 
		<!-- log4j-jcl --> 
		<dependency> 
			<groupId>org.apache.logging.log4j</groupId> 
			<artifactId>log4j-jcl</artifactId> 
			<version>2.6.2</version> 
		</dependency>
		<!-- log4j 
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
			<exclusions>
				<exclusion>
					<groupId>javax.mail</groupId>
					<artifactId>mail</artifactId>
				</exclusion>
				<exclusion>
					<groupId>javax.jms</groupId>
					<artifactId>jms</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jdmk</groupId>
					<artifactId>jmxtools</artifactId>
				</exclusion>
				<exclusion>
					<groupId>com.sun.jmx</groupId>
					<artifactId>jmxri</artifactId>
				</exclusion>
			</exclusions>
			<scope>runtime</scope>
		</dependency>
		-->  

		<!-- @Inject -->
		<dependency>
			<groupId>javax.inject</groupId>
			<artifactId>javax.inject</artifactId>
			<version>1</version>
		</dependency>

		<!-- Servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet.jsp</groupId>
			<artifactId>jsp-api</artifactId>
			<version>2.1</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<!-- Test -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-all</artifactId>
			<version>1.10.19</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${org.springframework-version}</version>
			<scope>test</scope>
		</dependency>
		<dependency>
			<groupId>com.jayway.jsonpath</groupId>
			<artifactId>json-path</artifactId>
			<version>2.2.0</version>
			<scope>test</scope>
		</dependency>

		<!-- dbcp -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.2</version>
		</dependency>

		<!-- mybatis spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.0.2</version>
		</dependency>
		
		<dependency>
		    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-resources-plugin</artifactId>
		    <version>3.1.0</version>
		</dependency>
				

		<!-- https://mvnrepository.com/artifact/org.postgresql/postgresql -->
		<dependency>
		    <groupId>org.postgresql</groupId>
		    <artifactId>postgresql</artifactId>
		    <version>42.2.5</version>
		</dependency>
		
		<!-- Spring Security -->
		<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-core</artifactId>
		    <version>${org.springframework-security-version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-web</artifactId>
			<version>${org.springframework-security-version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-config</artifactId>
			<version>${org.springframework-security-version}</version>
		</dependency>

		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-taglibs</artifactId>
			<version>${org.springframework-security-version}</version>
		</dependency>
		<dependency>
		    <groupId>org.springframework.security</groupId>
		    <artifactId>spring-security-test</artifactId>
		    <version>${org.springframework-security-version}</version>
		    <scope>test</scope>
		</dependency>


		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1.1</version>
		</dependency>
		
		<dependency>
			<groupId>com.fasterxml.jackson.module</groupId>
			<artifactId>jackson-module-jaxb-annotations</artifactId>
			<version>2.10.1</version>
		</dependency>
		
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-core</artifactId>
		    <version>2.10.1</version>
		</dependency>
		
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-annotations</artifactId>
		    <version>2.10.1</version>
		</dependency>
			
		<dependency>
		    <groupId>com.fasterxml.jackson.core</groupId>
		    <artifactId>jackson-databind</artifactId>
		    <version>2.10.1</version>
		</dependency>
		
		<dependency>
			<groupId>org.codehaus.jackson</groupId>
			<artifactId>jackson-mapper-asl</artifactId>
			<version>1.9.13</version>
		</dependency>

		<dependency>
			<groupId>net.sf.jxls</groupId>
			<artifactId>jxls-core</artifactId>
			<version>1.0.6</version>
		</dependency>

		<dependency>
			<groupId>org.jxls</groupId>
			<artifactId>jxls</artifactId>
			<version>2.3.0</version>
		</dependency>

		<dependency>
			<groupId>org.jxls</groupId>
			<artifactId>jxls-poi</artifactId>
			<version>1.0.9</version>
		</dependency>

		<dependency>
			<groupId>org.jxls</groupId>
			<artifactId>jxls-jexcel</artifactId>
			<version>1.0.6</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.16</version>
		</dependency>
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>3.16</version>
		</dependency>

		<!--chart -->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml-schemas</artifactId>
			<version>3.16</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-examples</artifactId>
			<version>3.16</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-excelant</artifactId>
			<version>3.16</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-scratchpad</artifactId>
			<version>3.16</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>ooxml-schemas</artifactId>
			<version>1.3</version>
		</dependency>
		
		<!-- mail -->
		<dependency>
		   <groupId>org.springframework</groupId>
		   <artifactId>spring-context-support</artifactId>
		   <version>${org.springframework-version}</version>
		</dependency>
		
		<!-- javax.mail -->
		<dependency>
		    <groupId>javax.mail</groupId>
		    <artifactId>mail</artifactId>
		    <version>1.4.7</version>
		</dependency>

		<!--chart -->

		<dependency>
			<groupId>com.itextpdf</groupId>
			<artifactId>itextpdf</artifactId>
			<version>5.5.3</version>
		</dependency>
		<dependency>
			<groupId>com.itextpdf.tool</groupId>
			<artifactId>xmlworker</artifactId>
			<version>5.5.3</version>
		</dependency>
		
		<!-- tiles -->
		<dependency>
			<groupId>org.apache.tiles</groupId>
			<artifactId>tiles-extras</artifactId>
			<version>3.0.8</version>
		</dependency>

		<dependency>
			<groupId>javax.annotation</groupId>
			<artifactId>javax.annotation-api</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.34</version>
		</dependency>

		<dependency>
			<groupId>com.ganyo</groupId>
			<artifactId>gcm-server</artifactId>
			<version>1.0.2</version>
		</dependency>

		<!-- file Upload -->
		<!-- MultipartHttpServletRequset -->
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.0.1</version>
		</dependency>

		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.2.2</version> 
		</dependency> 

		<!-- JASYPT: Spring 3.1x Simplified Encryption -->
		<dependency>
			<groupId>org.jasypt</groupId>
			<artifactId>jasypt-spring31</artifactId>
			<version>1.9.2</version>
		</dependency>

		<dependency>
			<groupId>org.bouncycastle</groupId>
			<artifactId>bcprov-jdk15on</artifactId>
			<version>1.55</version>
		</dependency>

		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.11</version>
		</dependency>
		
		<!-- https://mvnrepository.com/artifact/com.mortennobel/java-image-scaling -->
		<dependency>
		    <groupId>com.mortennobel</groupId>
		    <artifactId>java-image-scaling</artifactId>
		    <version>0.8.5</version>
		</dependency>
		
		<dependency>
		    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-install-plugin</artifactId>
		    <version>2.4</version>
		</dependency>

		<dependency>
		    <groupId>org.apache.maven.plugins</groupId>
		    <artifactId>maven-clean-plugin</artifactId>
		    <version>3.1.0</version>
		</dependency>
		 		
  		<!-- https://mvnrepository.com/artifact/cn.apiclub.tool/simplecaptcha -->
		<dependency>
		    <groupId>cn.apiclub.tool</groupId>
		    <artifactId>simplecaptcha</artifactId>
		    <version>1.2.2</version>
		</dependency>
		
		<dependency>
		    <groupId>com.google.re2j</groupId>
		    <artifactId>re2j</artifactId>
		    <version>1.3</version>
		</dependency>
		
		<dependency>
		    <groupId>javax.validation</groupId>
		    <artifactId>validation-api</artifactId>
		    <version>2.0.1.Final</version>
		</dependency>
		  			
		<dependency>
		    <groupId>org.hibernate</groupId>
		    <artifactId>hibernate-validator</artifactId>
		    <version>6.1.5.Final</version>
		</dependency>
		  			
	</dependencies>

	<profiles>
		<profile>
			<id>sonar</id>
			<activation>
				<activeByDefault>true</activeByDefault>
			</activation>
			<properties>
				<sonar.projectKey>WF25CONSOLE</sonar.projectKey>
				<sonar.projectName>FILTER V1.1</sonar.projectName>
				<sonar.host.url>http://testCompany.co.kr</sonar.host.url>
				<sonar.login>a05tg4tgtrbty</sonar.login>
				<sonar.language>java</sonar.language>
				<sonar.sources>src/main/java</sonar.sources>
				<sonar.java.binaries>target/classes</sonar.java.binaries>
				<sonar.java.coveragePlugin>jacoco</sonar.java.coveragePlugin>
   				<sonar.dynamicAnalysis>reuseReports</sonar.dynamicAnalysis>
			</properties>
		</profile>
	</profiles>
	
	<build>
		<pluginManagement>
			<plugins>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-surefire-plugin</artifactId>
					<version>2.17</version>
				</plugin>
				<plugin>
					<groupId>org.jacoco</groupId>
					<artifactId>jacoco-maven-plugin</artifactId>
					<version>0.8.4</version>
				</plugin>
			</plugins>
		</pluginManagement>
	
		<plugins>
			<plugin>
				<artifactId>maven-eclipse-plugin</artifactId>
				<version>2.9</version>
				<configuration>
					<additionalProjectnatures>
						<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature>
					</additionalProjectnatures>
					<additionalBuildcommands>
						<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand>
					</additionalBuildcommands>
					<downloadSources>true</downloadSources>
					<downloadJavadocs>true</downloadJavadocs>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.6.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
					<compilerArgument>-Xlint:all</compilerArgument>
					<showWarnings>true</showWarnings>
					<showDeprecation>true</showDeprecation>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>exec-maven-plugin</artifactId>
				<version>1.2.1</version>
				<configuration>
					<mainClass>org.test.int1.Main</mainClass>
				</configuration>
			</plugin>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
			   	<configuration>
			    	<useFile>false</useFile>
			   	</configuration>
			</plugin>
		</plugins>
	</build>
</project>
728x90