메이븐 아티팩트 란 무엇입니까?


342

인공물이란 무엇이며 왜 Maven에 필요합니까?


3
Maven 개념에 대한 자세한 내용은 여기 : tshikatshikaaa.blogspot.nl/2012/05/…
Jerrôme Verstrynge


1
이 답변들 중 어느 것도 완전하지 않습니다. 당신은 Maven 저장소탐색하는 것만으로 이것을 볼 수 있습니다 . 아티팩트는 분명히 일부 제약 조건을 만족 하는 디렉토리입니다 . 예를 들어라는 파일 maven-metadata.xml과 이라는 파일이 있어야합니다 <artifactId>-<version>.pom. 이 두 파일 모두 문서화되지 않은 스키마와 의미를 가지고 있습니다.
jameshfisher

답변:


303

아티팩트는 Maven 저장소에 배치되는 파일 (일반적으로 JAR)입니다.

Maven 빌드는 컴파일 된 JAR 및 "소스"JAR과 같은 하나 이상의 아티팩트를 생성합니다.

각 이슈에는 그룹 ID (일반적으로 com.example.foo와 같은 역 도메인 이름), 이슈 ID (이름 만) 및 버전 문자열이 있습니다. 세 사람이 함께 유물을 고유하게 식별합니다.

프로젝트의 종속성은 이슈로 지정됩니다.


5
이슈는 기본적으로 JAR 파일입니까? 그래서, joda time jar 파일은 joda artifact라고 할 수 있고, hibernate jar는 hibernate artifact 등이라고 할 수 있습니까?
david blaine

47
인공물이 실제로 무엇인지 생각하십시오. 이집트인들은 도자기와 같은 훌륭한 유물을 만들었습니다. 그러나 이집트 그릇을 손에 든다면 그것이 인공물이라는 사실에 대해 논의하지 않는 한 그릇을 "인공물"이라고 부르지 않을 것입니다. 당신은 그것을 그릇이라고 부릅니다. 그들은 그릇을 먹었습니다. 그들은 유물을 먹지 않았습니다.
cbmeeks

3
@cbmeeks가 얻는 것은 "아티팩트"가 "사물"의 이름이 아니라 빌드 프로세스 의 역할 이라는 것 입니다. 만약 Maven이 그것을 생산하고 그것을 식별하기 위해 특별한 Maven 좌표 가 주어지면 무엇이든 "아티팩트"로 분류 될 수 있습니다 .
Garret Wilson

"com.example : mylibrary : 1.0.0"(groupId : artifactId : version)이라는 이름이있는 경우 jar, pom 및 소스 jar로 구성되며 다음 중 아티팩트입니다. 1. 각 파일 (pom, jar, source jar)는 별도의 아티팩트입니다. 2. 동일한 (groupId : artifactId : version)을 공유하는 파일 세트는 단일 아티팩트를 구성합니다. 3. 다른 것?
Laurence Gonsalves 4

클래스 이름이 주어진 groupid 및 artifactid를 얻는 방법에 대해서는 설명하지 않습니다. Downvote
Philip Rego

114

일반적인 소프트웨어 용어로, " 아티팩트 "는 소프트웨어 관련 문서이든 실행 파일이든 소프트웨어 개발 프로세스에 의해 생성 된 것입니다.

메이븐 용어로 이슈가 받는다는 빌드의 결과 출력, 일반적이다 jar또는 war다른 실행 파일. maven의 아티팩트는 groupId, artifactId 및 version의 좌표 시스템으로 식별됩니다. Maven은 사용 groupId, artifactIdversion구축하는 데 필요한 의존성 (일반적으로 다른 jar 파일)를 식별하고 코드를 실행합니다.


제 책은 "이 온라인 응용 프로그램의 핵심 아티팩트는 User라는 Java 클래스가 될 것입니다"라고 말합니다. 이것은 언급 한 아티팩트와 동일합니까?
david blaine

@davidblaine-정확하게 그 문장이 더 일반적인 의미로 사용됩니다.
Ken Liu

27

나는 이것이 고대의 실이라는 것을 알고 있지만 몇 가지 뉘앙스를 추가하고 싶었습니다.

Maven 아티팩트, 저장소 관리자 아티팩트 및 Maven이 있습니다 Artifact.

Maven 아티팩트는 다른 주석가 / 응답자들이 말한 것처럼 Maven 프로젝트를 빌드하여 분리되는 것입니다. 그건있을 수 .jar파일 또는 .war파일 또는 .zip파일 또는를 .dll, 또는 무엇을 가지고있다.

저장소 관리자 아티팩트는 저장소 관리자가 관리하는 것입니다. 리포지토리 관리자는 기본적으로 소프트웨어 실행 파일 및 라이브러리에 대한 고성능 이름 지정 서비스입니다. 저장소 관리자는 아티팩트의 출처를 신경 쓰지 않습니다 (아마도 Maven 빌드 또는 로컬 파일 또는 Ant 빌드 또는 수동 컴파일에서 비롯된 것일 수 있습니다).

Maven Artifact은 저장소 관리자가 저장소 관리자 아티팩트로 역 참조하는 "이름"의 종류를 나타내는 Java 클래스입니다. 이런 의미에서 사용되는 때,이 Artifact같은 부분으로 단지 영광 이름 groupId, artifactId, version, scope, classifier등.

모두 합치려면 :

  • Maven 프로젝트는 아마도 Artifact<dependency>요소 에 따라 여러 가지에 의존 할 것입니다 .
  • Maven은 저장소 관리자와 상호 작용하여 저장소 관리자에게 Artifact내부 파일에 해당하는 저장소 관리자 아티팩트를 보내도록 지시함으로써 파일을 파일로 분석합니다 Artifact.
  • 마지막으로 Maven은 해결 후 프로젝트를 빌드하고 Maven 아티팩트를 생성합니다. 원하는 도구를 사용하여 저장소 관리자 아티팩트 요청하면 다른 사람들 이 저장소 관리자에게 요청할 때 찾을 수있는 충분한 조정 정보와 함께 저장소 관리자에게이를 보내서 저장소 관리자 아티팩트를 "이것으로 전환"하도록 선택할 수 있습니다 .

희망이 도움이됩니다.


오래된 스레드 덕분에 새로운 정보 +1! 수정 오타 시간이 하하 ... 모두가 "이슈"실제 항아리입니다 말하는 올바른 단어 수 있습니다 응가에서 사용하는 경우, 예를 들어 지적하고 답변을 업데이트하는 것이 도움이 될 수도 있지만 "repoository" mvn install, 사람들이 그 항목에 넣을 것을 알아 내려고 노력했습니다. 따라서 항아리의 전체 이름은 무엇을 입력해야 -DartifactId=YOUR_ARTIFACT_ID합니까? 버전이 .jar 인 전체 jar 파일 이름? 당신이 말하고있는 것 같지만 일부는 실제로 명시 적으로하는 데 도움이됩니다. 다른 답변은 이것에 가까워 지지만 나는 당신의 최선이라고 생각했습니다.
JimLohse

23

Maven은 프로젝트에서 빌드를 구성합니다.

artifact받는다는에서은 Maven 프로젝트에 의해 생성 된 자원이다. 각 maven 프로젝트는 정확히 하나 artifact와 같은 것을 가질 수 있습니다 . 프로젝트의 구성 파일 은 아티팩트 빌드 방법, 단위 테스트 실행 방법 jar, war, ear등을 설명합니다. 일반적으로 maven을 사용한 소프트웨어 프로젝트 빌드는 아티팩트를 빌드하는 많은 maven 프로젝트 (예 : jar)로 구성됩니다. )는 제품을 구성합니다. 예 :
"pom.xml"

Root-Project   // produces no artifact, simply triggers the build of the other projects
  App-Project  // The application, that uses the libraries
  Lib1-Project // A project that creates a library (jar)
  Lib2-Project // Another library
  Doc-Project  // A project that generates the user documentation from some resources

Maven 아티팩트는 Java 자원으로 제한되지 않습니다. 필요한 리소스를 생성 할 수 있습니다. 예 : 문서, 프로젝트 사이트, Zip 보관소, 기본 라이브러리 등

각 maven 프로젝트에는 고유 식별자로 구성 [groupId, artifactId, version]됩니다. maven 프로젝트가 다른 프로젝트의 리소스를 필요로 할 때 pom.xml위에서 언급 한 식별자를 사용하여 종속성이 구성됩니다 . 그런 다음 Maven은 빌드가 트리거 될 때 종속성을 자동으로 해결합니다. 그런 다음 필요한 프로젝트의 아티팩트는 repository사용자의 집에있는 간단한 디렉토리 인 local 또는 사용자에 지정된 다른 (원격) 저장소에서로드 pom.xml됩니다.


19

Q. Maven에서 아티팩트 란 무엇입니까?
ANS : ARTIFACT는 JAR (WAR 또는 EAR)이지만 다른 것일 수도 있습니다. 각 유물에는

  • com.your.package와 같은 그룹 ID
  • 이슈 ID (이름 만)
  • 버전 문자열.
    세 사람이 함께 유물을 고유하게 식별합니다.

Q. Maven에 왜 필요한가요?
Ans : Maven은 애플리케이션에 사용 가능하도록하는 데 사용됩니다.


나는에 댓글로 멋진 대답, 다른 대답 으로 우리가 입력되어있는 것을 그것을 명시 적으로 확인 -DartifactId=YOUR_ARTIFACT_ID, 실행 설치 MVN 때 단지 제안 :
JimLohse

@ JimLohse 감사합니다, "편집"제목으로 추가 주시기 바랍니다 :)
VdeX

9

아티팩트는 JAR 또는 저장소에 저장하는 것입니다. Maven은 그것들을 꺼내어 코드를 작성합니다.


8

maven을 위해 빌드 프로세스는 일련의 아티팩트로 배열됩니다. 유물에는 다음이 포함됩니다.

  1. Maven 자체를 구성하는 플러그인.
  2. 코드가 의존하는 의존성.
  3. 빌드에서 생성하는 것은 무엇이든 사용할 수 있습니다.

유물은 저장소에 있습니다.


4

일반적으로 우리는 그룹 ID, 유물 ID 및 스냅 샷 버전에 대한 Maven 용어를 이야기합니다

그룹 ID : 프로젝트 그룹의 ID 이슈 ID : 프로젝트의 스냅 샷 버전 : 프로젝트에서 사용하는 버전.

유물은 단지 Jar, War, Ear ...와 같은 결과 파일 일뿐입니다.

아티팩트는 단지 패키지 일뿐입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.