Соглашение о присвоении имен для Артефактов Знатока

Мы в настоящее время пробуем к mavenize существующие проекты в нашей компании. Мы выполнили POC и в настоящее время документируем наше приобретение знаний и инструкции. Я предстал следующее соглашение о присвоении имен перед артефактами знатока. Совместно используйте свои комментарии к тому же

Примечание: В нашей компании projectname всегда уникален

Для единственного уровня много проект знатока модуля

Родитель (англичанин)

  • groupId: org.companyname.projectname
  • artifactId: org.companyname.projectname
  • версия: x.x.x

например: org.companyname.projectname:org.companyname.projectname-1.0.0.pom

Модули (банка)

  • groupId: org.companyname.projectname
  • artifactId: org.companyname.projectname.modulename
  • версия: x.x.x

например: org.companyname.projectname:org.companyname.projectname.modulename-1.0.0.jar

Для много уровня много проект знатока модуля

Родитель (англичанин)

  • groupId: org.companyname.projectname
  • artifactId: org.companyname.projectname
  • версия: x.x.x

например: org.companyname.projectname:org.companyname.projectname-1.0.0.pom

SubParent (англичанин)

  • groupId: org.companyname.projectname
  • artifactId: org.companyname.projectname.subcategory
  • версия: x.x.x

например: org.companyname.projectname:org.companyname.projectname.subcategory-1.0.0.pom

Модуль (банка)

  • groupId: org.companyname.projectname
  • artifactId: org.companyname.projectname.subcategory.modulename
  • версия: x.x.x

например: org.companyname.projectname:org.companyname.projectname.subcategory.modulename-1.0.0.jar

20
задан Péter Török 30 June 2010 в 14:24
поделиться

2 ответа

IMO, вам не нужно включать org.companyname в artifactId - это просто дублирует информация уже присутствует в groupId, что делает имена артефактов длиннее и менее читабельными.

Обновление: К вашему сведению, просматривая зависимости нашего проекта, я вижу множество похожих примеров, например

<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>

<groupId>org.codehaus.mojo</groupId>
<artifactId>jboss-maven-plugin</artifactId>

<groupId>net.sf.barcode4j</groupId>
<artifactId>barcode4j-fop-ext-0.20.5-complete</artifactId>

<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>

<groupId>opensymphony</groupId>
<artifactId>oscache</artifactId>

<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-libs</artifactId>

<groupId>javax.resource</groupId>
<artifactId>connector-api</artifactId>

<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>

<groupId>javax.transaction</groupId>
<artifactId>jta</artifactId>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>

Кроме того, во многих случаях идентификаторы группы и артефакта имеют одно и то же неквалифицированное имя, например:

<groupId>log4j</groupId>
<artifactId>log4j</artifactId>

<groupId>velocity</groupId>
<artifactId>velocity</artifactId>

<groupId>fop</groupId>
<artifactId>fop</artifactId>

<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>

Но я не видел ни одного, имеющего полностью определенный идентификатор группы и идентичный идентификатор артефакта (который, например, для Log4J будет org.apache.log4j: org.apache.log4j ).

18
ответ дан 30 November 2019 в 00:13
поделиться

Использование неполного имени для groupId , соответствующего artifactId (например, log4j ), является устаревшей практикой. что не рекомендуется : это плохо на уровне файловой системы, создает «беспорядок в репозитории», затрудняет поиск артефактов при просмотре репозитория (даже если в настоящее время большинство людей используют поисковую систему).

Рекомендуется включить ваше доменное имя в groupId , и я бы точно не стал повторять это в artifactId (насколько мне известно, Spring этого НЕ делает - кроме разве что артефактов OSGI?).

Вот что я использую:

Родитель (pom)

  • groupId: org.companyname.projectname
  • artifactId: root
  • version: x.x.x

например: org.companyname.имя проекта: root-1.0.0.pom

SubParent (pom)

  • groupId: org.companyname.projectname
  • artifactId: subcategory-parent
  • версия: xxx

например: org.companyname.projectname : subcategory-parent-1.0.0.pom

Модуль (jar)

  • groupId: org.companyname.projectname
  • artifactId: modulename
  • version: xxx

например: org.companyname.projectname: modulename-1.0.0.jar

И я также использую соглашения для элемента , чтобы иметь четкий обзор во время сборки реактора. Вот пример из домашнего проекта:

$ mvn compile
[INFO] Scanning for projects...
[INFO] Reactor build order: 
[INFO]   Personal Sandbox - Samples - Parent POM
[INFO]   Personal Sandbox - Samples - EJB3 and Cargo Sample
[INFO]   Personal Sandbox - Tools - Parent POM
[INFO]   Personal Sandbox - Tools - Shared Verification Resources
[INFO]   Personal Sandbox - Samples - EJB3 and Cargo Sample - Services
[INFO]   Personal Sandbox - Samples - EJB3 and Cargo Sample - Functests
[INFO]   Sandbox Externals POM

Это в значительной степени вдохновлено способом Винсента Массола организовывать большие сборки, как он сделал с XWiki или Cargo.

17
ответ дан 30 November 2019 в 00:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: