[maven-2] 메이븐 아티팩트 및 groupId 이름 지정

현재 일부 프로젝트를 Ant에서 Maven으로 옮기는 중입니다. 컨 포머 스트로서 나는 groupId과 를 찾기 위해 잘 설정된 컨벤션을 사용하고 싶지만 artifactId자세한 컨벤션을 찾을 수는 없습니다 (일부는 있지만 궁금한 점은 다루지 않습니다).

이 프로젝트를 예로 들어 보면, 먼저 Java 패키지입니다. com.mycompany.teatimer

티 타이머 는 실제로 두 단어이지만 Java 패키지 명명 규칙은 밑줄이나 하이픈을 삽입하는 것을 금지하므로 모두 함께 작성합니다.

나는 groupId그것이 좋은 생각이라고 생각하기 때문에 패키지 ID 와 동일한 것을 선택했습니다 . 그렇습니까?

마지막으로, 나는를 선택해야 artifactId나는 현재에 갔다, teatimer. 그러나 다른 Maven 프로젝트를 볼 때 하이픈을 사용하여 단어를 artifactIds 로 나눕니다 tea-timer. 받는 사람 연결될 때 그것은 이상한 보입니까 groupId: com.mycompany.teatimer.tea-timer.

어떻게 하시겠습니까?

다른 예시:

패키지 이름 : com.mycompany.awesomeinhouseframework

groupId: com.mycompany.awesomeinhouseframework(?)

artifactId: awesome-inhouse-framework(?)



답변

당신의 컨벤션은 합리적입니다. Maven 저장소에서 프레임 워크를 검색하는 경우 그룹 디렉토리 awesome-inhouse-framework-x.y.jar에서 찾으십시오 com.mycompany.awesomeinhouseframework. 그리고 나는 당신의 협약에 따라 거기에서 찾을 것입니다.

두 가지 간단한 규칙이 나를 위해 작동합니다.

  • Java 패키지 이름과 관련된 모든 제약 조건 이있는 groupId의 역 도메인 패키지 (매우 고유하기 때문에)
  • 프로젝트 이름을 artifactId로 지정하십시오 (jar 이름과 친숙해야 함을 명심하십시오. 즉 파일 이름에 유효하지 않거나 이상하게 보일 수있는 문자를 포함하지 않아야 함)

답변

괴상함은 매우 주관적이며 공식 권장 사항을 따르는 것이 좋습니다.

groupId, artifactId 및 버전에 대한 명명 규칙 안내서

  • groupId모든 프로젝트에서 프로젝트를 고유하게 식별하므로 명명 스키마를 적용해야합니다. 패키지 이름 규칙을 따라야합니다. 즉, 최소한 제어하는 ​​도메인 이름이어야하며 원하는 수의 하위 그룹을 만들 수 있습니다. 패키지 이름에 대한 추가 정보를보십시오 .

    예. org.apache.maven,org.apache.commons

    groupId의 단위를 결정하는 좋은 방법은 프로젝트 구조를 사용하는 것입니다. 즉, 현재 프로젝트가 다중 모듈 프로젝트 인 경우 부모의 groupId에 새 식별자를 추가해야합니다.

    예. org.apache.maven, org.apache.maven.plugins,
    org.apache.maven.reporting

  • artifactId버전이없는 jar의 이름입니다. 작성한 경우 소문자와 이상한 기호없이 원하는 이름을 선택할 수 있습니다. 제 3 자 항아리 인 경우 배포 된 항아리의 이름을 사용해야합니다.

    예. maven,commons-math

  • version배포하면 숫자와 점이있는 일반적인 버전 (1.0, 1.1, 1.0.1, …)을 선택할 수 있습니다. 날짜는 일반적으로 SNAPSHOT (야간) 빌드와 연관되므로 사용하지 마십시오. 타사 아티팩트 인 경우 버전 번호를 그대로 사용하고 보이는대로 이상하게 사용해야합니다.

    예. 2.0, 2.0.1,1.3.1


답변

기본 첫 Maven 애플리케이션 을 빌드 할 때 다음을 고려하십시오 .

groupId

  • com.companyname.project

artifactId

  • 계획

version

  • 0.0.1

답변

그러나 groupId, artifactId 및 version에 대한 명명 규칙에 대한 Guide 의 공식 정의에 동의하지 않습니다. 는 groupId가 사용자가 제어하는 ​​역 도메인 이름으로 시작해야한다고 제안합니다.

com이 프로젝트는 회사에 org속하고이 프로젝트는 사회 조직에 속함을 의미합니다. 이것들은 괜찮지 만 xxx.tv, xxx.uk, xxx.cn과 같은 이상한 도메인의 경우 “tv.”, “cn.”으로 시작하는 groupId의 이름을 지정하는 것은 의미가 없습니다. groupId는 기본 정보를 제공해야합니다. 도메인이 아닌 프로젝트의


답변

완전히 고유 한 jar 파일을 얻으려면 다음을 고려하십시오.

  • GroupID-com.companyname.project
  • ArtifactId-com-companyname-project
  • 패키지-com.companyname.project

답변