Пути артефактов в репозитории Maven будут следовать следующей формуле по умолчанию:
groupId
разбивается на папки с использованием полных остановок в качестве разделителя, затем artifactId
и version
образуют последнийдве папки - имя файла артефакта состоит из
artifactId
и version
, тип определяется как packaging
Итак, допустим, у вас есть многомодульный проект сmain pom.xml
:
<groupId>com.foobar.my.business</group>
<artifactId>myApp</artifactId>
<version>1.0-SNAPSHOT</version>
И у него есть два подмодуля, первый - веб-модуль, который создает конечную точку REST:
<parent>
<groupId>com.foobar.my.business</group>
<artifactId>myApp</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>myApp-web</artifactId>
<packaging>war</packaging>
Второй - уровень персистентности:
<parent>
<groupId>com.foobar.my.business</group>
<artifactId>myApp</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<artifactId>myApp-persistence</artifactId>
<packaging>jar</packaging>
Допустим, ваш локальный репозиторий найден в ~/.m2/repository
.Тогда ваши артефакты будут сохранены в локальном хранилище по адресу:
- ~ / .m2 / хранилище / com / foobar / my / business / myapp / 1.0-SNAPSHOT / myapp-1.0-SNAPSHOT.pom
- ~ / .m2 / репозиторий / com / foobar / my / business / myapp-web / 1.0-SNAPSHOT / myapp-web-1.0-SNAPSHOT.pom
- ~ / .m2 / repository / com/foobar/my/business/myapp-web/1.0-SNAPSHOT/myapp-web-1.0-SNAPSHOT.war
- ~ / .m2 / repository / com / foobar / my / business / myapp-persistence / 1.0-SNAPSHOT / myapp-persistence-1.0-SNAPSHOT.pom
- ~ / .m2 / репозиторий / com / foobar / my / business / myapp-persistence / 1.0-SNAPSHOT / myapp-persistence-1.0-SNAPSHOT.jar
Окончательное имя сборки артефакта и местоположение локального хранилища могут быть изменены.Но вы можете использовать следующие выражения, чтобы проверить их:
${settings.localRepository}
вернет путь к локальному репозиторию. ${project.build.finalName}
вернет окончательное имя артефакта сборки.
Чтобы получить этот список почти в правильном формате, вы можете запустить:
- В Windows
mvn -q exec:exec -Dexec.executable="cmd" -Dexec.args="/C echo ${settings.localRepository}\${project.groupId}\${project.artifactId}\${project.version}\${project.build.finalName}.${project.packaging}"
- В POSIX
mvn -q exec:exec -Dexec.executable='echo' -Dexec.args='${settings.localRepository}/${project.groupId}/${project.artifactId}/${project.version}/${project.build.finalName}.${project.packaging}'
Тогда вам просто нужно исправить полные остановки в groupId
.
Также есть команда mvn dependency:build-classpath
, которая покажет расположение каждой зависимости от файловой системы, которая иногда может пригодиться.