Мы в настоящее время пробуем к mavenize существующие проекты в нашей компании. Мы выполнили POC и в настоящее время документируем наше приобретение знаний и инструкции. Я предстал следующее соглашение о присвоении имен перед артефактами знатока. Совместно используйте свои комментарии к тому же
Примечание: В нашей компании projectname всегда уникален
например: org.companyname.projectname:org.companyname.projectname-1.0.0.pom
например: org.companyname.projectname:org.companyname.projectname.modulename-1.0.0.jar
например: org.companyname.projectname:org.companyname.projectname-1.0.0.pom
например: org.companyname.projectname:org.companyname.projectname.subcategory-1.0.0.pom
например: org.companyname.projectname:org.companyname.projectname.subcategory.modulename-1.0.0.jar
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
).
Использование неполного имени для groupId , соответствующего artifactId (например, log4j
), является устаревшей практикой. что не рекомендуется : это плохо на уровне файловой системы, создает «беспорядок в репозитории», затрудняет поиск артефактов при просмотре репозитория (даже если в настоящее время большинство людей используют поисковую систему).
Рекомендуется включить ваше доменное имя в groupId , и я бы точно не стал повторять это в artifactId (насколько мне известно, Spring этого НЕ делает - кроме разве что артефактов OSGI?).
Вот что я использую:
например: org.companyname.имя проекта: root-1.0.0.pom
например: org.companyname.projectname : subcategory-parent-1.0.0.pom
например: 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.