실행 중인 서버의 vm option을 확인하기 위해서는 

jps 명령어를 사용하여 알 수 있다. 

 

https://www.ibm.com/docs/en/semeru-runtime-ce-z/11?topic=tools-java-process-status-jps

 

Java process status (jps)

<!-- * Copyright (c) 2017, 2024 IBM Corp. and others * * This program and the accompanying materials are made * available under the terms of the Eclipse Public License 2.0 * which accompanies this distribution and is available at * https://www.eclipse.org/

www.ibm.com

 

jps -v

해당 옵션을 사용하면 vm에 전달된 option들을 확인할 수 있다. 

'정보 > Server' 카테고리의 다른 글

[Project] maven setting.xml  (0) 2024.04.26
[Project] The settings.xml File in Maven  (1) 2024.04.26
[Project] Maven Packaging Types  (0) 2024.04.26
[Project] Accessing Maven Properties in Java  (0) 2024.04.25
[Project] Maven Properties Defaults  (1) 2024.04.25

setting.xml 설정 관련 https://www.baeldung.com/maven-settings-xml#bd-configurations 를 번역해 올리긴 했는데.

필자는

<localRepository>C:\dev\...</localRepository>

이런식으로 <localRepository> 만 사용 해봄. 

profile 도 pom.xml 에서 사용.

 

profile의 경우 dev와 product (운영)간 따로 패키징할때 사용...

 

 

 

참고용

https://github.com/apache/maven-war-plugin/tree/4f8a41ec48333bb6d4eddfa4bd06ecd7d529807a

 

GitHub - apache/maven-war-plugin: Apache Maven WAR Plugin

Apache Maven WAR Plugin. Contribute to apache/maven-war-plugin development by creating an account on GitHub.

github.com

 

https://www.baeldung.com/maven-settings-xml 구글번역 + 자체교정

 

 

1. 개요

Maven을 사용하는 동안 우리는 대부분의 프로젝트별 구성을 pom.xml에 유지합니다.
Maven은 사용할 로컬 및 원격 저장소를 지정할 수 있는 설정 파일인 settings.xml을 제공합니다. 자격 증명( credentials )과 같이 소스 코드에 원하지 않는 설정을 저장하는 데에도 사용할 수 있습니다.
이 튜토리얼에서는 settings.xml을 사용하는 방법을 배웁니다. 프록시, 미러링, 프로필을 살펴보겠습니다. 또한 프로젝트에 적용되는 현재 설정을 결정하는 방법에 대해서도 논의하겠습니다.

 

2. 구성

settings.xml 파일은 Maven 설치를 구성합니다. pom.xml 파일과 유사하지만 전역적으로 또는 사용자별로 정의됩니다.
settings.xml 파일에서 구성할 수 있는 요소를 살펴보겠습니다. settings.xml 파일의 기본 설정 요소에는 사전 정의된 9개의 하위 요소가 포함될 수 있습니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository/>
    <interactiveMode/>
    <offline/>
    <pluginGroups/>
    <servers/>
    <mirrors/>
    <proxies/>
    <profiles/>
    <activeProfiles/>
</settings>

 

2.1. Simple Values

일부 최상위 구성 요소에는 간단한 값이 포함되어 있습니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository>${user.home}/.m2/repository</localRepository>
    <interactiveMode>true</interactiveMode>
    <offline>false</offline>
</settings>

localRepository 요소는 시스템의 로컬 저장소 경로를 가리킵니다. 로컬 저장소는 프로젝트의 모든 종속성이 캐시되는 곳입니다. 기본값은 사용자의 홈 디렉터리를 사용하는 것입니다. 그러나 로그인한 모든 사용자가 공통 로컬 저장소에서 빌드할 수 있도록 이를 변경할 수 있습니다.
InteractiveMode 플래그는 Maven이 입력을 요청하는 사용자와 상호 작용할 수 있는지 여부를 정의합니다. 이 플래그의 기본값은 true입니다.
오프라인 플래그는 빌드 시스템이 오프라인 모드에서 작동할 수 있는지 여부를 결정합니다. 기본값은 false입니다. 그러나 빌드 서버가 원격 저장소에 연결할 수 없는 경우에는 이를 true로 전환할 수 있습니다.

 

2.2. Plugin Groups

PluginGroups 요소에는 groupId를 지정하는 하위 요소 목록이 포함되어 있습니다. groupId는 특정 Maven 아티팩트를 생성한 조직의 고유 식별자입니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <pluginGroups>
        <pluginGroup>org.apache.tomcat.maven</pluginGroup>
    </pluginGroups>
</settings>

Maven은 명령줄에 제공된 groupId 없이 플러그인을 사용할 때 플러그인 그룹 목록을 검색합니다. 목록에는 기본적으로 org.apache.maven.plugins 및 org.codehaus.mojo 그룹이 포함되어 있습니다. 위에 정의된 settings.xml 파일을 사용하면 잘린 Tomcat 플러그인 명령을 실행할 수 있습니다. (잘린 tomcat 플러그인을 실행할 수 있다는 거는 밑에 명령어를 말하는 듯하다.)

mvn tomcat7:help
mvn tomcat7:deploy
mvn tomcat7:run

 

2.3. 프록시

Maven의 HTTP 요청 중 일부 또는 전부에 대해 프록시를 구성할 수 있습니다. 프록시 요소는 하위 프록시 요소 목록을 허용하지만 한 번에 하나의 프록시만 활성화할 수 있습니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <proxies>
        <proxy>
            <id>baeldung-proxy</id>
            <active>true</active>
            <protocol>http</protocol>
            <host>baeldung.proxy.com</host>
            <port>8080</port>
            <username>demo-user</username>
            <password>dummy-password</password>
            <nonProxyHosts>*.baeldung.com|*.apache.org</nonProxyHosts>
        </proxy>
    </proxies>
</settings>

활성 플래그를 통해 현재 활성 프록시를 정의합니다. 그런 다음 nonProxyHosts 요소를 사용하여 프록시되지 않는 호스트를 지정합니다. 사용되는 구분 기호는 특정 프록시 서버에 따라 다릅니다. 가장 일반적인 구분 기호는 파이프(|)와 쉼표(,)입니다.

 

2.4. Mirrors

저장소는 pom.xml 프로젝트 내에서 선언될 수 있습니다. 이는 프로젝트 코드를 공유하는 개발자가 즉시 올바른 저장소 설정을 얻을 수 있음을 의미합니다.

특정 저장소에 대한 대체 미러를 정의하려는 경우 미러를 사용할 수 있습니다. 이는 pom.xml의 내용을 재정의합니다.
예를 들어, 모든 저장소 요청을 미러링하여 Maven이 단일 저장소를 사용하도록 강제할 수 있습니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
        <mirror>
            <id>internal-baeldung-repository</id>
            <name>Baeldung Internal Repo</name>
            <url>https://baeldung.com/repo/maven2/</url>
            <mirrorOf>*</mirrorOf>
        </mirror>
    </mirrors>
</settings>


주어진 저장소에 대해 하나의 미러만 정의할 수 있으며 Maven은 첫 번째 일치 항목을 선택합니다. 일반적으로 CDN을 통해 전 세계적으로 배포되는 공식 저장소를 사용해야 합니다.

 

2.5. 서버

pom.xml 프로젝트에서 저장소를 정의하는 것은 좋은 습관입니다. 그러나 자격 증명( credentials )과 같은 보안 설정을 pom.xml을 사용하여 소스 코드 저장소에 넣어서는 안 됩니다. 대신 settings.xml 파일에 이 보안 정보를 정의합니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <servers>
        <server>
            <id>internal-baeldung-repository</id>
            <username>demo-user</username>
            <password>dummy-password</password>
            <privateKey>${user.home}/.ssh/bael_key</privateKey>
            <passphrase>dummy-passphrase</passphrase>
            <filePermissions>664</filePermissions>
            <directoryPermissions>775</directoryPermissions>
            <configuration></configuration>
        </server>
    </servers>
</settings>

settings.xml의 서버 ID는 pom.xml에 언급된 저장소의 ID 요소와 일치해야 합니다. XML을 사용하면 placeholders 를 사용하여 환경 변수에서 자격 증명 ( credentials )을 선택할 수도 있습니다.

 

3. profile

profile 요소를 사용하면 ID 하위 요소로 구별되는 여러 프로필 하위 요소를 만들 수 있습니다. settings.xml의 profile 요소는 pom.xml에서 사용할 수 있는 동일한 요소의 잘린 버전입니다.
activationrepositoriespluginRepositories, and properties 의 네 가지 하위 요소만 포함할 수 있습니다. 이러한 요소는 특정 프로젝트 대신 빌드 시스템 전체를 구성합니다.
settings.xml의 활성 프로필 값이 pom.xml 또는 profile .xml 파일의 어떤 동등한 해당 profile 값보다 우선 적용된다는 점에 유의하는 것이 중요합니다. 프로필은 ID와 일치합니다.

 

3.1. Activation

특정 상황에서만 특정 값을 수정하기 위해 프로필을 사용할 수 있습니다. activation 요소를 사용하여 이러한 상황을 지정할 수 있습니다. 결과적으로 지정된 모든 기준이 충족되면 profile activation이 발생합니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <profiles>
        <profile>
            <id>baeldung-test</id>
            <activation>
                <activeByDefault>false</activeByDefault>
                <jdk>1.8</jdk>
                <os>
                    <name>Windows 10</name>
                    <family>Windows</family>
                    <arch>amd64</arch>
                    <version>10.0</version>
                </os>
                <property>
                    <name>mavenVersion</name>
                    <value>3.0.7</value>
                </property>
                <file>
                    <exists>${basedir}/activation-file.properties</exists>
                    <missing>${basedir}/deactivation-file.properties</missing>
                </file>
            </activation>
        </profile>
    </profiles>
</settings>

네 가지 가능한 activators 가 있으며 모두 지정할 필요는 없습니다.

  • jdk: 지정된 JDK 버전에 따라 활성화됩니다(범위가 지원됨).
  • os: 운영 체제 속성에 따라 활성화됩니다.
  • property : Maven이 특정 속성 값을 감지하면 프로필을 활성화합니다.
  • file: 주어진 파일 이름이 존재하거나 누락된 경우 프로필을 활성화합니다.

어떤 프로필이 특정 빌드를 활성화할지 확인하려면 Maven 도움말 플러그인을 사용할 수 있습니다.

mvn help:active-profiles

출력에는 특정 프로젝트에 대해 현재 활성화된 프로필이 표시됩니다.

[INFO] --- maven-help-plugin:3.2.0:active-profiles (default-cli) @ core-java-streams-3 ---
[INFO]
Active Profiles for Project 'com.baeldung.core-java-modules:core-java-streams-3:jar:0.1.0-SNAPSHOT':
The following profiles are active:
 - baeldung-test (source: com.baeldung.core-java-modules:core-java-streams-3:0.1.0-SNAPSHOT)

 

3.2. Properties

Maven 속성은 특정 값에 대한 명명된 placeholders 로 생각할 수 있습니다. ${property_name} 표기법을 사용하여 pom.xml 파일 내에서 값에 액세스할 수 있습니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <profiles>
        <profile>
            <id>baeldung-test</id>
            <properties>
                <user.project.folder>${user.home}/baeldung-tutorials</user.project.folder>
            </properties>
        </profile>
    </profiles>
</settings>

pom.xml 파일에서는 네 가지 유형의 속성을 사용할 수 있습니다.

  • env 접두사를 사용하는 속성은 ${env.PATH}와 같은 환경 변수 값을 반환합니다.
  • 프로젝트 접두사를 사용하는 속성은 ${project.version}과 같은 pom.xml의 프로젝트 요소에 설정된 속성 값을 반환합니다.
  • setting 접두사를 사용하는 속성은 ${settings.localRepository}와 같은 settings.xml에서 해당 요소의 값을 반환합니다.
  • ${java.home}과 같이 Java의 System.getProperties 메소드를 통해 사용 가능한 모든 속성을 직접 참조할 수 있습니다.
  • ${junit.version}과 같이 접두사가 없는 속성 요소 내에 설정된 속성을 사용할 수 있습니다.

3.3. Repositories

원격 저장소에는 Maven이 로컬 저장소를 채우는 데 사용하는 아티팩트 모음이 포함되어 있습니다. 특정 아티팩트에는 다른 원격 저장소가 필요할 수 있습니다. Maven은 활성 프로필에서 활성화된 저장소를 검색합니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <profiles>
        <profile>
            <id>adobe-public</id>
            <repositories>
	        <repository>
	            <id>adobe-public-releases</id>
	            <name>Adobe Public Repository</name>
	            <url>https://repo.adobe.com/nexus/content/groups/public</url>
	            <releases>
	                <enabled>true</enabled>
	                <updatePolicy>never</updatePolicy>
	            </releases>
	            <snapshots>
	                <enabled>false</enabled>
	            </snapshots>
	        </repository>
	    </repositories>
        </profile>
    </profiles>
</settings>

repository 요소를 사용하여 특정 저장소의 아티팩트 릴리스 또는 스냅샷 버전만 활성화할 수 있습니다.

 

3.4. Plugin Repositories

Maven 아티팩트에는 종속성 및 플러그인이라는 두 가지 표준 유형이 있습니다. Maven 플러그인은 특별한 유형의 아티팩트이므로 플러그인 저장소를 다른 저장소와 분리할 수 있습니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <profiles>
        <profile>
            <id>adobe-public</id>
            <pluginRepositories>
               <pluginRepository>
                  <id>adobe-public-releases</id>
                  <name>Adobe Public Repository</name>
                  <url>https://repo.adobe.com/nexus/content/groups/public</url>
                  <releases>
                      <enabled>true</enabled>
                      <updatePolicy>never</updatePolicy>
                  </releases>
                  <snapshots>
                      <enabled>false</enabled>
                  </snapshots>
	        </pluginRepository>
	    </pluginRepositories>
        </profile>
    </profiles>
</settings>

pluginRepositories 요소의 구조는 repositories 요소와 매우 유사합니다. (위의 코드블럭 repositories element와 구조가 유사)

 

3.5. Active Profiles

activeProfiles 요소에는 특정 프로필 ID를 참조하는 하위 요소가 포함되어 있습니다. Maven은 여기에 참조된 모든 프로필을 자동으로 활성화합니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <activeProfiles>
        <activeProfile>baeldung-test</activeProfile>
        <activeProfile>adobe-public</activeProfile>
    </activeProfiles>
</settings>

 

이 예에서 mvn의 모든 호출은 명령줄에 -P baeldung-test,adobe-public을 추가한 것처럼 실행됩니다.

 

4. Settings Level

settings.xml 파일은 일반적으로 다음 두 위치에서 찾을 수 있습니다. 

  • Mavens 홈 디렉터리의 전역 설정: ${maven.home}/conf/settings.xml
  • 사용자 설정: ${user.home}/.m2/settings.xml

두 파일이 모두 존재하면 해당 내용이 병합됩니다. 사용자 설정의 구성이 우선적으로 적용됩니다.

 

4.1. Determine File Location

전역 및 사용자 설정의 위치를 ​​결정하기 위해 디버그 플래그를 사용하여 Maven을 실행하고 출력에서 ​​"설정"을 검색할 수 있습니다.

mvn -X clean | grep "settings"

[DEBUG] Reading global settings from C:\Program Files (x86)\Apache\apache-maven-3.6.3\bin\..\conf\settings.xml
[DEBUG] Reading user settings from C:\Users\Baeldung\.m2\settings.xml

 

4.2. Determine Effective Settings

Maven 도움말 플러그인을 사용하여 결합된 전역 및 사용자 설정의 내용을 확인할 수 있습니다.

mvn help:effective-settings

다음은 XML 형식의 설정을 설명합니다.

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
    <localRepository>C:\Users\Baeldung\.m2\repository</localRepository>
    <pluginGroups>
        <pluginGroup>org.apache.tomcat.maven</pluginGroup>
        <pluginGroup>org.apache.maven.plugins</pluginGroup>
        <pluginGroup>org.codehaus.mojo</pluginGroup>
    </pluginGroups>
</settings>

 

4.3. Override the Default Location

Maven을 사용하면 명령줄을 통해 전역 및 사용자 설정의 위치를 ​​재정의할 수도 있습니다.

mvn clean --settings c:\user\user-settings.xml --global-settings c:\user\global-settings.xml
// --setting 과 -s 가 같은 옵션
mvn clean --s c:\user\user-settings.xml --gs c:\user\global-settings.xml

 

5. Conclusion

이 기사에서는 Maven의 settings.xml 파일에서 사용할 수 있는 구성을 살펴보았습니다. 프록시, 리포지토리 및 프로필을 구성하는 방법을 배웠습니다. 다음으로 전역 설정 파일과 사용자 설정 파일의 차이점과 사용 중인 파일을 확인하는 방법을 살펴보았습니다. 마지막으로 사용되는 효과적인 설정을 결정하고 기본 파일 위치를 재정의하는 방법을 살펴보았습니다.

'정보 > Server' 카테고리의 다른 글

Java vm option [argument] 확인하기  (0) 2024.05.23
[Project] maven setting.xml  (0) 2024.04.26
[Project] Maven Packaging Types  (0) 2024.04.26
[Project] Accessing Maven Properties in Java  (0) 2024.04.25
[Project] Maven Properties Defaults  (1) 2024.04.25

https://www.baeldung.com/maven-packaging-types 구글번역 + 자체교정

 

1. 개요

패키징 유형은 모든 Maven 프로젝트의 중요한 측면입니다. 프로젝트가 생성하는 아티팩트 유형을 지정합니다. 일반적으로 빌드는 jar, war, pom 또는 기타 실행 파일을 생성합니다.
Maven은 다양한 기본 패키징 유형을 제공하며 사용자 정의 패키징을 정의할 수 있는 유연성도 제공합니다.

이 튜토리얼에서는 Maven 패키징 유형에 대해 자세히 살펴보겠습니다. 먼저 Maven의 빌드 수명주기를 살펴보겠습니다. 그런 다음 각 패키징 유형, 해당 유형이 나타내는 내용, 프로젝트 수명 주기에 미치는 영향에 대해 논의하겠습니다. 마지막에는 맞춤 패키징 유형을 정의하는 방법을 살펴보겠습니다.

2. 기본 패키징 유형

Maven은 jar, war,ear, pom, rar, ejb 및 maven-plugin을 포함하는 다양한 기본 패키징 유형을 제공합니다. 각 패키징 유형은 여러 단계로 구성된 빌드 수명 주기를 따릅니다. 일반적으로 모든 단계는 일련의 목표이며 특정 작업을 수행합니다. (번역상은 맞는거같은데 이해가 잘안됨)

다양한 패키징 유형은 특정 단계에서 서로 다른 목표를 가질 수 있습니다. 예를 들어 jar 패키징 유형의 패키지 단계에서는 maven-jar-plugin의 jar goal이 실행됩니다. 반대로 war 프로젝트의 경우 maven-war-plugin의 war goal이 동일한 단계에서 실행됩니다.

(packaging 단계에서 jar 패키징 유형은 maven-jar-plugin의 jar goal 이 실행되고 war 패키징 유형은 maven-war-plugin의 war goal이 실행된다)

 

2.1. jar
Java 아카이브(또는 jar)는 가장 널리 사용되는 패키징 유형 중 하나입니다. 이 패키징 유형을 사용하는 프로젝트는 확장자가 .jar인 압축된 zip 파일을 생성합니다. 여기에는 순수 Java 클래스, 인터페이스, 리소스 및 메타데이터 파일이 포함될 수 있습니다.

먼저 jar에 대한 기본  goal-to-build-단계 바인딩 중 일부를 살펴보겠습니다.

  • resources: resources
  • compiler: compile
  • resources: testResources
  • compiler: testCompile
  • surefire: test
  • jar: jar
  • install: install
  • deploy: deploy

지체 없이 jar 프로젝트의 패키징 유형을 정의해 보겠습니다.

<packaging>jar</packaging>

아무 것도 명시되지 않았으면 Maven은 패키징 유형을 jar로 간주합니다. 

 

2.2. war
간단히 말해서 웹 애플리케이션 아카이브(또는 war)에는 웹 애플리케이션과 관련된 모든 파일이 포함되어 있습니다. 여기에는 Java 서블릿, JSP, HTML 페이지, 배포 descriptor 및 관련 리소스가 포함될 수 있습니다. 전반적으로 war는  jar와 동일한 목표 바인딩을 갖지만 한 가지 예외를 제외하면 전쟁의 패키지 단계에는 war라는 다른 목표가 있습니다.

의심의 여지 없이 jar와 war는 Java 커뮤니티에서 가장 인기 있는 패키징 유형입니다. 이 둘의 자세한 차이점을 읽어보면 흥미로울 것입니다.
웹 애플리케이션의 패키징 유형을 정의해 보겠습니다.

<packaging>war</packaging>

다른 패키징 유형인 ejb, par 및 rar도 비슷한 수명 주기를 갖고 있지만 각각 패키지 목표가 다릅니다.

 

2.3 ear

엔터프라이즈 애플리케이션 아카이브(ear)는 J2EE 애플리케이션이 포함된 압축 파일입니다. 이는 웹 모듈(war 파일로 패키지됨), EJB 모듈(jar 파일로 패키지됨) 또는 둘 다일 수 있는 하나 이상의 모듈로 구성됩니다.

다르게 말하면, ear는 jars와 wars의 상위 집합이며 애플리케이션을 실행하려면 애플리케이션 서버가 필요한 반면, war는 이를 배포하려면 웹 컨테이너나 웹 서버만 있으면 됩니다. 웹 서버와 애플리케이션 서버를 구별하는 측면과 Java에서 널리 사용되는 서버는 Java 개발자에게 중요한 개념입니다.
ear 에 대한 기본 목표 바인딩을 정의해 보겠습니다.

  • ear: generate-application-xml
  • resources: resources
  • ear: ear
  • install: install
  • deploy: deploy

이러한 프로젝트의 패키징 유형을 정의하는 방법은 다음과 같습니다.

<packaging>ear</packaging>

 

2.4. pom
모든 포장 유형 중에서 pom이 가장 간단한 유형입니다. aggregators 및 상위 프로젝트를 만드는 데 도움이 됩니다.
aggregators 또는 다중 모듈 프로젝트는 다양한 소스에서 나오는 하위 모듈을 조립합니다. 이러한 하위 모듈은 일반 Maven 프로젝트이며 자체 빌드 수명 주기를 따릅니다. aggregators POM에는 모듈 요소 아래에 하위 모듈에 대한 모든 참조가 있습니다.
상위 프로젝트를 사용하면 POM 간의 상속 관계를 정의할 수 있습니다. 상위 POM은 해당 버전과 함께 특정 구성, 플러그인 및 종속성을 공유합니다. 상위 요소의 대부분 요소는 해당 하위 요소에 상속됩니다. 예외에는 아티팩트 ID, 이름 및 필수 구성 요소가 포함됩니다.
처리할 리소스도 없고 컴파일하거나 테스트할 코드도 없기 때문입니다. 따라서 pom 프로젝트의 아티팩트는 실행 파일 대신 자체적으로 생성됩니다.
다중 모듈 프로젝트의 패키징 유형을 정의해 보겠습니다.

<packaging>pom</packaging>

이러한 프로젝트는  install and deploy 라는 두 단계로만 구성된 가장 간단한 수명 주기를 갖습니다.

 

2.5. maven-plugin
Maven은 다양하고 유용한 플러그인을 제공합니다. 그러나 기본 플러그인만으로는 충분하지 않은 경우가 있을 수 있습니다. 이 경우 도구는 프로젝트 필요에 따라 maven 플러그인을 생성할 수 있는 유연성을 제공합니다.
플러그인을 생성하려면 프로젝트의 패키징 유형을 설정하세요.

<packaging>maven-plugin</packaging>

maven-plugin의 수명주기는 jar의 수명주기와 비슷하지만 두 가지 예외가 있습니다.
플러그인: descriptor generate-resources 생성 단계에 바인딩됩니다.
플러그인: addPluginArtifactMetadata가 package 단계에 추가됩니다.
이러한 유형의 프로젝트에는 maven-plugin-api 종속성이 필요합니다.

 

2.6. ejb
Enterprise Java Bean(또는 ejb)은 확장 가능한 분산 서버측 애플리케이션을 만드는 데 도움이 됩니다. EJB는 종종 애플리케이션의 비즈니스 로직을 제공합니다. 일반적인 EJB 아키텍처는 EJB(Enterprise Java Bean), EJB 컨테이너 및 애플리케이션 서버의 세 가지 구성 요소로 구성됩니다.
이제 EJB 프로젝트의 패키징 유형을 정의해 보겠습니다.

<packaging>ejb</packaging>

ejb 패키징 유형도 jar 패키징과 비슷한 수명주기를 갖고 있지만 패키지 목표( package goal )는 다릅니다. 이 유형의 프로젝트에 대한 패키지 목표는 ejb:ejb입니다.

ejb 패키징 유형을 사용하는 프로젝트에는 수명 주기 목표를 실행하기 위해 maven-ejb-plugin이 필요합니다. Maven은 EJB 2 및 3을 지원합니다. 버전이 지정되지 않으면 기본 버전 2가 사용됩니다.

 

2.7. rar
리소스 어댑터(rar)는 애플리케이션 서버에 리소스 어댑터를 배포하기 위한 유효한 형식으로 사용되는 아카이브 파일입니다. 기본적으로 Java 애플리케이션을 EIS(Enterprise Information System)에 연결하는 시스템 수준 드라이버입니다.
rar 의 패키징 유형 선언은 다음과 같습니다.

<packaging>rar</packaging>

 

3. 기타 패키징 유형

지금까지 Maven이 기본으로 제공하는 다양한 패키징 유형을 살펴보았습니다. 이제 프로젝트에서 .zip 확장자를 가진 아티팩트를 생성한다고 가정해 보겠습니다. 이 경우 기본 패키징 유형은 도움이 되지 않습니다.
Maven은 또한 플러그인을 통해 더 많은 패키징 유형을 제공합니다. 이러한 플러그인의 도움으로 맞춤형 패키징 유형과 빌드 수명주기를 정의할 수 있습니다. 이러한 유형 중 일부는 다음과 같습니다.

  • msi
  • rpm
  • tar
  • tar.bz2
  • tar.gz
  • tbz
  • zip

사용자 정의 유형을 정의하려면 패키징 유형과 라이프사이클 단계를 정의해야 합니다. 이를 위해 src/main/resources/META-INF/plexus 디렉터리 아래에 Components.xml 파일을 만듭니다.

<component>
   <role>org.apache.maven.lifecycle.mapping.LifecycleMapping</role>
   <role-hint>zip</role-hint>
   <implementation>org.apache.maven.lifecycle.mapping.DefaultLifecycleMapping</implementation>
   <configuration>
      <phases>
         <process-resources>org.apache.maven.plugins:maven-resources-plugin:resources</process-resources>
         <package>com.baeldung.maven.plugins:maven-zip-plugin:zip</package>
         <install>org.apache.maven.plugins:maven-install-plugin:install</install>
         <deploy>org.apache.maven.plugins:maven-deploy-plugin:deploy</deploy>
      </phases>
   </configuration>
</component>

Maven은 새로운 패키징 유형과 수명주기에 대해 아무것도 모릅니다. 이를 표시하려면 프로젝트의 pom 파일에 플러그인을 추가하고 확장자를 true로 설정하겠습니다.

<plugins>
    <plugin>
        <groupId>com.baeldung.maven.plugins</groupId>
        <artifactId>maven-zip-plugin</artifactId>
        <extensions>true</extensions>
    </plugin>
</plugins>

이제 프로젝트를 스캔할 수 있으며 시스템은 플러그인과 Components.xml 파일도 조사합니다. 이러한 모든 유형 외에도 Maven은 외부 프로젝트 및 플러그인을 통해 다른 많은 패키징 유형을 제공합니다. 예를 들어 nar(네이티브 아카이브), swf 및 swc는 Adobe Flash 및 Flex 콘텐츠를 생성하는 프로젝트의 패키징 유형입니다. 이러한 프로젝트에는 사용자 정의 패키징을 정의하는 플러그인과 해당 플러그인이 포함된 저장소가 필요합니다.

 

4. 결론

이번 글에서는 Maven에서 사용할 수 있는 다양한 패키징 유형을 살펴보았습니다. 또한 이러한 유형이 무엇을 나타내고 수명 주기에서 어떻게 다른지 익숙해졌습니다. 마지막에는 사용자 정의 패키징 유형을 정의하고 기본 빌드 수명 주기를 사용자 정의하는 방법도 배웠습니다.
Baeldung의 모든 코드 예제는 Maven을 사용하여 빌드되었습니다. 0n GitHub를 통해 다양한 Maven 구성을 확인해 보세요.

maven property에 접근하는 방법

 

https://www.baeldung.com/java-accessing-maven-properties (해당 글을 구글 번역 돌리고 작성자가 약간의 교정) 

1. 개요

이 짧은 튜토리얼에서는 Java 애플리케이션에서 Maven의 pom.xml 내에 정의된 변수를 사용하는 방법을 살펴보겠습니다.

 

2. 플러그인 구성

이 예제에서는 Maven Properties Plugin을 사용합니다. (https://www.mojohaus.org/properties-maven-plugin/)
이 플러그인은 generate-resources 단계에 바인딩되고 컴파일 중에 pom.xml에 정의된 변수가 포함된 파일을 생성합니다. 그런 다음 런타임에 해당 파일을 읽어 값을 얻을 수 있습니다.
프로젝트에 플러그인을 포함시키는 것부터 시작해 보겠습니다.

<plugin>
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>properties-maven-plugin</artifactId> 
    <version>1.0.0</version> 
    <executions> 
        <execution> 
            <phase>generate-resources</phase> 
            <goals> 
                <goal>write-project-properties</goal> 
            </goals> 
            <configuration> 
                <outputFile>${project.build.outputDirectory}/properties-from-pom.properties</outputFile> 
            </configuration> 
        </execution> 
    </executions> 
</plugin>

다음으로 계속해서 변수에 값을 제공하겠습니다. 또한 pom.xml 내부에 이를 정의하므로 Maven  placeholder를 사용할 수도 있습니다. Maven placeholder: https://github.com/cko/predefined_maven_properties/blob/master/README.md

 

predefined_maven_properties/README.md at master · cko/predefined_maven_properties

Contribute to cko/predefined_maven_properties development by creating an account on GitHub.

github.com

<properties> 
    <name>${project.name}</name> 
    <my.awesome.property>property-from-pom</my.awesome.property> 
</properties>

 

3. 속성 읽기

이제 구성에서 속성에 액세스할 차례입니다. 클래스 경로에 있는 파일의 속성을 읽는 간단한 유틸리티 클래스를 만들어 보겠습니다.

public class PropertiesReader {
    private Properties properties;

    public PropertiesReader(String propertyFileName) throws IOException {
        InputStream is = getClass().getClassLoader()
            .getResourceAsStream(propertyFileName);
        this.properties = new Properties();
        this.properties.load(is);
    }

    public String getProperty(String propertyName) {
        return this.properties.getProperty(propertyName);
    }
}

다음으로 위에 작성한 속성을 읽는 테스트 케이스를 작성합니다. 

// 플러그인을 포함시켰을때 <outputFile>하위에 설정한 파일이름
PropertiesReader reader = new PropertiesReader("properties-from-pom.properties"); 
// <properties> 태그 안에 설정한 <my.awesome.property>값을 읽는다.
String property = reader.getProperty("my.awesome.property"); 
// <my.awesome.property> 값이 property-from-pom 이었는데 해당 값과 동일한지 테스트한다.
Assert.assertEquals("property-from-pom", property);

 

4. 결론

이번 글에서는 Maven Properties Plugin을 이용하여 pom.xml에 정의된 값을 읽는 과정을 살펴보았습니다.
언제나 그렇듯이 모든 코드는 GitHub에서 사용할 수 있습니다.

'정보 > Server' 카테고리의 다른 글

[Project] The settings.xml File in Maven  (1) 2024.04.26
[Project] Maven Packaging Types  (0) 2024.04.26
[Project] Maven Properties Defaults  (1) 2024.04.25
[WSL] WSL 환경에 Python 개발환경설정  (0) 2024.04.04
[Windows] WSL 세팅  (0) 2024.04.04

 

maven build pom.xml 에서 기본값 설정방법 

 

https://www.baeldung.com/maven-properties-defaults (해당 게시글을 구글 번역 돌림)

1. 개요

Apache Maven은 주로 Java 프로젝트에 사용되는 강력한 빌드 자동화 도구입니다. Maven은 프로젝트 빌드를 위한 프로젝트 및 구성 세부 정보에 대한 정보가 포함된 프로젝트 개체 모델(POM)을 사용합니다. POM 내부에서는 POM 자체 또는 다중 모듈로 구성된 프로젝트의 하위 POM에서 사용할 수 있는 속성을 정의할 수 있습니다.
Maven 속성을 사용하면 한 곳에서 값을 정의하고 프로젝트 정의 내의 여러 다른 위치에서 사용할 수 있습니다.
이 짧은 기사에서는 기본값을 구성하는 방법과 이를 사용하는 방법을 살펴보겠습니다.

 

2. POM의 기본값

가장 일반적으로 우리는 POM에서 Maven 속성에 대한 기본값을 정의합니다. 이를 보여주기 위해 라이브러리 종속성에 대한 기본값을 보유하는 속성을 생성합니다. POM에서 속성과 기본값을 정의하는 것부터 시작해 보겠습니다.

<properties>
    <junit.version>4.13</junit.version>
</properties>


이 예에서는 junit.version이라는 속성을 만들고 기본값 4.13을 할당했습니다.

 

3. settings.xml의 기본값

사용자의 settings.xml에서 Maven 속성을 정의할 수도 있습니다. 이는 사용자가 속성에 대해 고유한 기본값을 설정해야 하는 경우 유용합니다. POM에서 정의한 것과 동일한 방식으로 settings.xml에서 속성과 해당 값을 정의합니다.
사용자 홈 디렉터리의 .m2 디렉터리에서 settings.xml을 찾습니다.

 

4. 명령줄의 기본값

Maven 명령을 실행할 때 명령줄에서 속성의 기본값을 정의할 수 있습니다. 이 예에서는 기본값 4.13을 4.12로 변경합니다.

mvn install -Djunit.version=4.12

 

5. POM에서 속성 사용

POM의 다른 곳에서 기본 속성 값을 참조할 수 있으므로 계속해서 junit 종속성을 정의하고 속성을 사용하여 버전 번호를 검색해 보겠습니다.

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
    </dependency>
</dependencies>

${junit.version} 구문을 사용하여 junit.version 값을 참조하고 있습니다.

 

6. 결론

이 짧은 기사에서 우리는 세 가지 다른 방법으로 Maven 속성의 기본값을 정의하는 방법을 살펴보았으며, 보시다시피 관리만 하면 되면서도 동일한 값을 다양한 위치에서 재사용할 수 있도록 하는 데 유용합니다. 한 곳에서.

언제나 그렇듯이 예제 코드는 GitHub에서 찾을 수 있습니다.

https://learn.microsoft.com/ko-kr/training/modules/wsl-introduction/install-and-setup

 

연습 - Training

WSL을 사용하여 Windows에 Linux 배포판을 설치하고, Linux 사용자 이름 및 암호를 설정하고, wsl install 명령을 사용하는 방법을 이해합니다.

learn.microsoft.com

 

cmd 창에서 wsl --install 입력 -> 시스템 재시작하라고 뜹니다.

저의 경우 terminal 에서 wsl --install 을 치니까 다운받은 파일이 있다고 깔더라구요.

 

해당 설정창에서 저의 경우 terminal을 열면 바로 Ubuntu로 열리도록 설정을 바꾸었습니다. 

 

위의 마이크로소프트 링크 따라서 하면 쉽게 WSL (Windows Subsystem for Linux) 환경을 세팅하실 수 있습니다.

+ Recent posts