메이븐의 '폼' 패키지는 무엇입니까?
저는 Tomcat 서버에 컴파일하여 배포하는 maven 프로젝트를 받았습니다.오늘은 메이븐을 사용해 본 적이 없지만, 꽤 많이 검색해 보고 있습니다.최상위 수준인 것 같아요.pom.xml
이 프로젝트의 파일에는 다음과 같이 설정된 패키징 유형이 있습니다.pom
.
그 다음에 뭘 해야 하지?mvn install
이 애플리케이션을 도입할 수 있습니까?나는 내가 그 사람을 찾을 수 있을 거라고 기대했다.war
어디선가 파일을 보관하고 있는데 제가 잘못 봤거나 한 발짝도 놓쳤나 봐요
pom
는 기본적으로 서브모듈의 컨테이너이며 각 서브모듈은 와 같은 디렉토리 내의 서브디렉토리에 의해 표시됩니다.pom.xml
와 함께pom
패키징.
프로젝트 구조 내에 중첩된 어딘가에 다음과 같은 아티팩트(모듈)가 있습니다.war
패키징.Maven은 일반적으로 모든 것을 구축합니다./target
각 모듈의 서브 디렉토리그래서 그 후에mvn install
조사하다target
모듈 내의 서브 디렉토리war
패키징.
물론입니다.
$ find . -iname "*.war"
마찬가지로 잘 동작합니다;-).
pom 패키징은 단순히 전쟁이나 항아리가 아니라 pom.xml 그 자체임을 나타내는 사양입니다.
통상, 문제의 프로젝트의 서브 디렉토리에 포함되는 「모듈」과 병용하는 경우가 많습니다.단, 프라이머리 바이너리가 구축되어 있지 않은 특정 시나리오에서도 사용할 수 있습니다.다른 중요한 아티팩트는 모두 2차 아티팩트로 선언되어 있습니다.
"문서" 프로젝트를 생각해 보십시오. 기본 아티팩트는 PDF일 수 있지만 이미 구축되어 있으므로 구성보다 이를 보조 아티팩트로 선언하는 작업을 통해 컴파일이 필요 없는 PDF를 구축하는 방법을 알 수 있습니다.
패키징pom
다른 프로젝트를 집계하는 프로젝트 및 유용한 출력이 일부 플러그인의 연결된 아티팩트인 프로젝트에서 사용됩니다.당신의 경우, 당신의 최고 수준의 폼은<modules>...</modules>
다른 디렉토리를 집약합니다.실제 출력은, 다른(하위) 디렉토리의 1개의 결과입니다.이 목적을 위해 합리적으로 코드화된 경우 다음과 같은 패키징이 이루어집니다.war
.
mvn:install을 실행하면 maven은 (pom.xml의 packaging 속성을 기반으로 패키지화된 아티팩트를 만듭니다.maven 설치 실행 후 .package 확장자를 가진 파일을 찾을 수 있습니다.
- 프로젝트 작업 공간의 대상 디렉터리에 있습니다.
- 또한 maven 2 로컬저장소가 상자에서 (.m2/respository)를 검색하는 경우 아티팩트는 (groupId/artifactId/artifactId-version.packaging) 디렉토리의 .m2 저장소에 나열됩니다.
- 디렉토리 아래에 패키지 확장 파일과 pom 확장자가 있습니다(pom 확장자는 기본적으로 이 패키지를 생성하기 위해 사용되는 pom.xml입니다).
- maven 프로젝트가 멀티 모듈인 경우 각 모듈은 위에서 설명한 바와 같이 2개의 파일을 제공합니다.단, POM만 있는 최상위 프로젝트는 제외합니다.
아티팩트를 POM으로 패키징하는 것은 매우 심플한 라이프 사이클을 의미합니다.
package -> install -> deploy
http://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html
이것은 pom.xml 파일이나 다른 패키징 유형과 맞지 않는 프로젝트를 전개할 때 유용합니다.
우리는 많은 프로젝트에 POM 패키지를 사용하고 있으며, 필요에 따라 추가 단계와 목표를 묶습니다.
예를 들어, 델의 애플리케이션에는 다음과 같은 것이 있습니다.
prepare-package -> test -> package -> install -> deploy
응용 프로그램을 설치하면 로컬 .m2 저장소에 응용 프로그램을 추가해야 합니다.다른 곳에 게시하려면 올바른 배포 관리 정보를 설정해야 합니다.아티팩트가 Maven에 의해 자동으로 첨부되지 않는 경우 maven builder helper 플러그인을 사용해야 할 수도 있습니다.
http://maven.apache.org/guides/getting-started/index.html#How_do_I_build_more_than_one_project_at_once에서 전형적인 예를 볼 것을 권장합니다.
여기서 my-webapp은 my-app 프로젝트의 코드에 따라 달라지는 웹 프로젝트입니다.두 프로젝트를 하나로 묶기 위해 최종적으로 묶을 프로젝트(매븐 용어에 따른 모듈)를 나타내는 최상위 pom.xml이 있습니다.이러한 최상위 수준의 pom.xml에서는 pom 패키지를 사용할 수 있습니다.
my-webapp은 전쟁 패키징을 할 수 있고 my-app에 의존할 수 있습니다. my-webapp은 jar 패키징을 할 수 있습니다.
"포장"은 항아리, 전쟁, 귀와 같은 다른 패키지/포장물이 들어 있는 용기일 뿐입니다.
mvn clean compile install과 같은 외부 패키지/패키지 조작을 실행하는 경우.이너 패키지/하드웨어도 클린 컴파일 설치가 됩니다.
각 패키지/패키지별로 별도의 작업을 수행할 필요가 없습니다.
실제 사용 사례
Java를 많이 사용하는 회사에서는 Nexus 아티팩트 저장소에 들어가야 하는 Python 프로젝트가 있었습니다.Python은 바이너리가 없기 때문에 단순히 .tar 또는 .zip 파일을 push하고 싶을 뿐입니다.레포는 이미 메이브 통합이 되어 있어서<packaging>pom</packaging>
python 프로젝트를 패키징하기 위한 maven 어셈블리 플러그인이 있는 지정자.zip
올려주세요.
https://maven.apache.org/pom.html
부모 프로젝트 및 어그리게이션(멀티 모듈) 프로젝트에서는 pom이어야 하는 패키지 유형입니다.이러한 유형은 일련의 라이프 사이클 단계에 바인딩된 목표를 정의합니다.예를 들어 패키징이 jar인 경우 패키지 단계는 jar:jar 목표를 실행합니다.패키지가 pom일 경우 실행되는 목표는 site:attach-descriptor가 됩니다.
POM(Project Object Model)은 프로젝트를 구축하기 위한 자동화 스크립트에 불과하며, 자동화 스크립트를 XML로 작성할 수 있으며, 빌드 스크립트 파일의 이름은 자동화 도구마다 다릅니다.
ANT에서는 build.xml, MAVEN에서는 pom.xml이라고 부릅니다.
MAVEN은 항아리, 화기, 귀, POM을 포장할 수 있으며, 새로운 것은 우리 모두에게 전달된다.
언급URL : https://stackoverflow.com/questions/7692161/what-is-pom-packaging-in-maven
'programing' 카테고리의 다른 글
Vuex에서 변환 또는 액션 내에서 공유 도우미 함수를 호출하는 방법 (0) | 2022.08.15 |
---|---|
Vue 개체를 요소에 연결할 때 가장 권장되는 구문은 무엇입니까? (0) | 2022.08.15 |
@EJB를 사용할지 @Inject를 사용할지 (0) | 2022.08.15 |
Arrays.asList() vs Collections.singletonList() (0) | 2022.08.15 |
vue.select 2 다중 선택 (0) | 2022.08.08 |