Maven java: как установить фреймворк и разобраться с плагинами
Содержание:
- The detailed issue list
- Reporters and Contributors of this release
- List Of Last Plugins Versions Which Support Maven 2.x
- Как управлять зависимостями в Maven
- Пошаговая установка Maven
- Плагины Maven
- Overview about the changes
- Dependencies
- Apache Maven Project Info Reports Plugin
- Какими бывают Maven-репозитории
- Apache Maven Install Plugin
- User visible Changes
The detailed issue list
Sub-task
- Convert Maven Settings Builder to JSR 330 - Convert Maven Model Builder to JSR 330 - Convert Maven Embedder to JSR 330
Bug
- NullPointerException when pom.xml has incomplete XML tag - NullPointerException in DefaultExceptionHandler - DefaultModelValidator.validateId is inefficient - ComparableVersion.parseVersion is inefficient - DefaultArtifactVersion.parseVersion is inefficient - ArtifactHandlerManager.getArtifactHandler is inefficient - ExcludesArtifactFilter is a memory hog - NPE on reporting convertion (DefaultReportingConverter) when inheritance of with no reports - Child inherit.append.path attributes not defined in Maven POM XSD - Tycho-based modules do not build with 3.6.1 (works with 3.6.0) - Version comparison CLI does not work anymore - NPE in DefaultReportingConverter when reports has no InputLocation (using polyglot Maven) - NPE in DefaultReportingConverter (when reports injected by Repaint IO maven-tiles) - DefaultProjectBuildingRequest copy constructor does not copy all fields - Model location handling uses too much memory - Tycho cannot resolve project dependencies - Equal compile source roots are added multiple times - DefaultUrlNormalizer doesn't normalize all relative URIs - MavenRepositorySystemUtils.newSession() misses assignment - Maven XML parser does not accept '>' in XML processing instructions - Downgrade maven-resolver:1.4.0 to 1.3.3 - Fix ExclusionArtifactFilter to respect wildcard - relative testSourceDirectory on macos throw duplicate class error - MultiThreadedBuilder: wait for parallel running projects when using --fail-fast - MavenProject.getParentFile() not set when using ProjectBuilder.build(List<File>, ...)
Improvement
- Migrate to non deprecated parts of Commons CLI - Prevent reparsing POMs in MavenMetadataSource - Add support for "release" qualifier - toolchain.xml file should support environment variables - Hint at Maven upgrade requirement when trying to build a pom.xml with a newer modelVersion - Make Resolver debug log messages for projects and plugins consistent - Improve speed in collection merging - Speed improvements while parsing big reactor projects - Add a fast interpolator not using reflection - Lazily compute the ManagedVersionMap - Document maven.repo.local system property - Improve DefaultModelValidator performance - Speep up Artifact version check and Parent interpolation - Upgrade Plexus Utils to 3.2.1 - StringSearchModelInterpolator introspects objects from Java API - Generalize 'resume from' message when build reactor fails
Test
- Improve test coverage of org.apache.maven.model.path.DefaultUrlNormalizer
Task
- improve documentation: dependency type = file classifier(optional)+extension + additional hints on dependency features
Dependency upgrade
- Remove unused transitive dependencies of Guava - upgrade plexus-component-metadata to 2.0.0 to get reproducible META-INF/plexus/components.xml - Upgrade maven-assembly-plugin to 3.1.1 - Upgrade Modello to 1.11 - Upgrade Wagon to 3.3.3 - Upgrade maven-resolver to 1.4.1
Reporters and Contributors of this release
We really value the contributions of these non committers, so this section is focused on those individuals. Descriptions of the issues fixed can be found at the .
Issue Reporters of this release: Benoit GUERIN, Christian Schulte, Elliotte Rusty Harold, Falko Modler, Francesco Chicchiriccò, Guillaume Nodet, guofei, Joseph Walton, Louis Mills, Mark Derricutt, Mark McKelvy, Mickael Istria, Nicolas Echegut, Nicolas Radde, Raphael Rösch, Ray Tsang, Robert Thornton, Rohan Padhye, Sergey Chernov, Stefan Oehme, Thibaud Lepretre, zhb.
Code Contributors of this release: Guillaume Nodet, Mickael Istria, Ray Tsang, Stefan Oehme, Joseph Walton, Bo Zhang, AElMehdi, Christian Schulte, Mao Shuai, MartinKanters, Sergey Chernov, Jesse Glick.
Many thanks to all reporters and contributors for their time and support.
List Of Last Plugins Versions Which Support Maven 2.x
This list contains the list of plugins with the last version that supports Maven 2.x, which means if you have to use Maven 2, this list is the reference to the last version of plugins you can use.
NOTE: If you find plugins which are not mentioned or issues please report on the users mailing list.
Plugin (current docs) | Type* | Version | Release Date | Description |
---|---|---|---|---|
Core plugins | Plugins corresponding to default core phases (ie. clean, compile). They may have multiple goals as well | |||
clean | B | 2.6.1 | 2014-10-26 | Clean up after the build |
compiler | B | 3.3 | 2015-03-26 | Compiles Java sources |
deploy | B | 2.8.2 | 2014-08-27 | Deploy the built artifact to the remote repository |
failsafe | B | 2.19.1 | 2016-01-03 | Run the JUnit integration tests in an isolated classloader |
install | B | 2.5.2 | 2014-08-27 | Install the built artifact into the local repository |
resources | B | 2.7 | 2014-09-29 | Copy the resources to the output directory for including in the JAR |
site | B | 2.4 | 2012-04-03 | Generate a site for the current project |
surefire | B | 2.19.1 | 2016-01-03 | Run the JUnit unit tests in an isolated classloader |
verifier | B | 1.1 | 2015-04-14 | Useful for integration tests — verifies the existence of certain conditions |
Packaging types/tools | These plugins relate to packaging respective artifact types | |||
ear | B | 2.10.1 | 2015-06-27 | Generate an EAR from the current project |
ejb | B | 2.5.1 | 2015-06-20 | Build an EJB (and optional client) from the current project |
jar | B | 2.6 | 2015-03-09 | Build a JAR from the current project |
rar | B | 2.4 | 2014-09-08 | Build a RAR from the current project |
war | B | 2.6 | 2015-01-08 | Build a WAR from the current project |
app-client/acr | B | 1.1 | 2014-09-02 | Build a JavaEE application client from the current project |
shade | B | 1.7.1 | 2012-06-27 | Build an Uber-JAR from the current project, including dependencies |
source | B | 2.4 | 2014-10-07 | Build a source-JAR from the current project |
Reporting plugins | Plugins which generate reports, are configured as reports in the POM and run under the site generation lifecycle | |||
changelog | R | 2.3 | 2014-06-24 | Generate a list of recent changes from your SCM |
changes | B+R | 2.11 | 2014-09-28 | Generate a report from an issue tracker or a change document |
checkstyle | B+R | 2.15 | 2015-03-20 | Generate a Checkstyle report |
doap | B | 1.2 | 2015-03-17 | Generate a Description of a Project (DOAP) file from a POM |
docck | B | 1.1 | 2015-04-03 | Documentation checker plugin |
javadoc | B+R | 2.10.3 | 2015-04-14 | Generate Javadoc for the project |
jxr | R | 2.5 | 2014-11-02 | Generate a source cross reference |
linkcheck | R | 1.2 | 2014-10-08 | Generate a Linkcheck report of your project’s documentation |
pmd | B+R | 3.4 | 2015-02-03 | Generate a PMD report |
project-info-reports | R | 2.8 | 2015-01-05 | Generate standard project reports |
surefire-report | R | 2.19.1 | 2016-01-03 | Generate a report based on the results of unit tests |
Tools | These are miscellaneous tools available through Maven by default | |||
ant | B | 2.4 | 2014-12-15 | Generate an Ant build file for the project |
antrun | B | 1.8 | 2014-12-26 | Run a set of ant tasks from a phase of the build |
archetype | B | 2.3 | 2015-03-05 | Generate a skeleton project structure from an archetype |
assembly | B | 2.5.4 | 2015-04-27 | Build an assembly (distribution) of sources and/or binaries |
dependency | B+R | 2.10 | 2015-01-27 | Dependency manipulation (copy, unpack) and analysis |
enforcer | B | 1.4.1 | 2015-08-23 | Environmental constraint checking (Maven Version, JDK etc), User Custom Rule Execution |
gpg | B | 1.6 | 2015-01-19 | Create signatures for the artifacts and poms |
help | B | 2.2 | 2013-02-23 | Get information about the working environment for the project |
invoker | B+R | 1.10 | 2015-04-03 | Run a set of Maven projects and verify the output |
jarsigner | B | 1.4 | 2015-01-21 | Signs or verifies project artifacts |
patch | B | 1.2 | 2015-03-09 | Use the gnu patch tool to apply patch files to source code |
B | 1.3 | 2015-02-16 | Generate a PDF version of your project’s documentation | |
plugin | B+R | 3.4 | 2015-01-04 | Create a Maven plugin descriptor for any mojos found in the source tree, to include in the JAR |
release | B | 2.5.2 | 2015-04-18 | Release the current project — updating the POM and tagging in the SCM |
remote-resources | B | 1.5 | 2013-08-14 | Copy remote resources to the output directory for inclusion in the artifact |
repository | B | 2.4 | 2015-02-22 | Plugin to help with repository-based tasks |
scm | B | 1.9.4 | 2015-04-01 | Execute SCM commands for the current project |
scm-publish | B | 1.0-beta-2 | 2012-11-01 | Publish your Maven website to a scm location |
stage | B | 1.0 | 2015-03-03 | Assists with release staging and promotion |
toolchains | B | 1.1 | 2014-11-11 | Allows to share configuration across plugins |
IDEs | Plugins that simplify integration with integrated developer environments | |||
eclipse | B | 2.10 | 2015-05-28 | Generate an Eclipse project file for the current project |
* Build or Reporting plugin
Как управлять зависимостями в Maven
Dependency manager в Maven обеспечивает проект необходимыми для работы библиотеками. Просто добавьте их в список зависимостей фреймворка.
Например:
Для простой и удобной работы с файлами добавим библиотеку Apache Commons IO. Для этого в pom.xml необходимо добавить несколько строк:
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>
После их добавления файл будет выглядеть так:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>example.com</groupId> <artifactId>example</artifactId> <version>1.0-SNAPSHOT</version> <dependencies> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency> </dependencies> </project>
Чтобы библиотека была готова к использованию, необходимо разрешить IntelliJ IDEA импортировать зависимость.
import org.apache.commons.io.FileUtils; import java.io.File; public class TestMaven { public static void main(String[] args) { File tempDirectory = FileUtils.getTempDirectory(); } }
Все последующие зависимости также записываются в <dependencies/>. Их можно располагать в любой последовательности.
Пошаговая установка Maven
. Минимально необходимое свободное место на диске — 500 Мб.
2. Распакованный архив переместите в удобную для вас директорию. В Windows путь к Maven может выглядеть как C:\Program Files\maven\, в Linux — /opt/maven.
3. Введите mvn -version в командную строку, чтобы проверить корректность установки фреймворка.
4. Далее создайте новый проект в IntelliJIDEA.
Создание нового проекта
5. Заполните поля в появившемся диалоговом окне.
Заполните поля в диалоговом окне
Проект также можно создать в удобном для вас месте. Его структура выглядит так:
- pom.xml — файл, который полностью управляет фреймворком Maven;
- src/main/java — папка, в которой находятся все Java-классы;
- src/main/resources — папка, в которой находятся таблицы стилей, веб-страницы, изображения, используемые приложением.
Проект можно создать в удобном для вас месте
Плагины Maven
Плагины Maven используются для создания JAR-, WAR-файлов, юнит-тестов кода, создания документации и отчетов, компиляции файлов.
Плагины сборки конфигурируются в файле pom.xml внутри тегов <build></build>, а плагины отчетов — в <reporting></reporting>.
Самые распространенные и часто используемые плагины:
Jar. Формирует JAR-файл проекта.
Например:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.2</version> <configuration> <finalName>myJar</finalName> </configuration> </plugin>
Assembly. Сборка артефактов в пакеты.
Пример сборки JAR-пакета:
<plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin>
Clean. Удаляет директорию target после сборки.
Пример с параметром filesets:
<plugin> <artifactId>maven-clean-plugin</artifactId> <version>3.0.0</version> <configuration> <filesets> <fileset> <directory>output-resources</directory> </fileset> </filesets> </configuration> </plugin>
Surefire. Запуск тестов и отчетов.
Например:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <version>2.20</version> <configuration> <includes> <include>Sample.java</include> </includes> <excludes> <exclude>**/TestCircle.java</exclude> <exclude>**/TestSquare.java</exclude> </excludes> </configuration> </plugin>
Javadoc. Генерация javadoc.
Например, для создания автономной документации для проекта плагин Javadoc необходимо добавить в раздел <build> файла pom.xml.
<build> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>2.9.1</version> <executions> <execution> <id>attach-javadocs</id> <goals> <goal>jar</goal> </goals> </execution> </executions> <configuration> <docfilessubdirs>true</docfilessubdirs> </configuration> </plugin> </build>
Compiler. Компиляция исходных файлов.
Например:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.6.2</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin>
Antrun. Запуск задач ant.
Например, у плагина Antrun должен быть <target>.
<plugins> <plugin> <artifactId>maven-antrun-plugin</artifactId> <version>3.0.0</version> <executions> <execution> <phase> <!-- a lifecycle phase --> </phase> <configuration> <target> <!-- Разместите здесь любую задачу Ant. --> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin> </plugins>
Overview about the changes
-
There had been issues related to the project discoverytime which has been increased in previous version which influenced some of our users. This should have been fixed MNG-6311, MNG-6383 and MNG-6412.
-
The output in the reactor summary has been improved MNG-6391 cause it confused people. In Maven 3.6.0 the reactor summary now looks like the following:
------------------------------------------------------------------------ Reactor Summary for parent 5.0.4-SNAPSHOT: parent ............................................. SUCCESS domain ............................................. SUCCESS service-client ..................................... SUCCESS webgui ............................................. SUCCESS service ............................................ SUCCESS app ................................................ SUCCESS appasm ............................................. SUCCESS shade .............................................. SUCCESS assembly ........................................... SUCCESS ------------------------------------------------------------------------ BUILD SUCCESS ------------------------------------------------------------------------ Total time: 6.824 s Finished at: 2018-11-01T12:20:16+01:00 ------------------------------------------------------------------------
The in the above output is the artifact name of the root module and the is the versions number for all modules in this reactor build.
If you have an aggregator pom which contains different modules with different versions each line will contain the appropriate versions which looks like this:
------------------------------------------------------------------------ Reactor Summary: Apache Maven ACR Plugin 3.0.1-SNAPSHOT ............. SUCCESS Apache Maven AntRun Plugin 3.0.0-SNAPSHOT .......... SUCCESS Apache Maven Changelog Plugin 2.4-SNAPSHOT ......... SUCCESS Apache Maven Changes Plugin 3.0.0-SNAPSHOT ......... SUCCESS Apache Maven Clean Plugin 3.0.1-SNAPSHOT ........... SUCCESS Apache Maven Compiler Plugin 3.7.1-SNAPSHOT ........ SUCCESS Apache Maven Deploy Plugin 3.0.0-SNAPSHOT .......... SUCCESS Apache Maven Documentation Checker Plugin 1.2-SNAPSHOT SUCCESS Apache Maven EAR Plugin 3.0.0-SNAPSHOT ............. SUCCESS Apache Maven EJB Plugin 3.0.1-SNAPSHOT ............. SUCCESS ...
Dependencies
In a multi module build you have often the case that you define dependencies between module(s). The usual way of defining dependencies and their appropriate versions has been to use and this has not been changed.
So the correct way to do such things can be seen in the following example:
<project> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache</groupId> <artifactId>apache</artifactId> <version>18</version> </parent> <groupId>org.apache.maven.ci</groupId> <artifactId>ci-parent</artifactId> <name>First CI Friendly</name> <version>${revision}</version> ... <properties> <revision>1.0.0-SNAPSHOT</revision> </properties> <modules> <module>child1</module> .. </modules> </project>
The child will look like this:
<project> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.apache.maven.ci</groupId> <artifactId>ci-parent</artifactId> <version>${revision}</version> </parent> <groupId>org.apache.maven.ci</groupId> <artifactId>ci-child</artifactId> ... <dependencies> <dependency> <groupId>org.apache.maven.ci</groupId> <artifactId>child2</artifactId> <version>${project.version}</version> </dependency> </dependencies> </project>
Apache Maven Project Info Reports Plugin
The Maven Project Info Reports plugin is used to generate reports information about the project.
Goals Overview
The Project Info Reports Plugin has the following goals:
- project-info-reports:ci-management is used to generate the Project Continuous Integration Management report.
- project-info-reports:dependencies is used to generate the Project Dependencies report.
- project-info-reports:dependency-convergence is used to generate the Project Dependency Convergence report for (reactor) builds.
- project-info-reports:dependency-info is used to generate code snippets to be added to build tools.
- project-info-reports:dependency-management is used to generate the Project Dependency Management report.
- project-info-reports:distribution-management is used to generate the Project Distribution Management report.
- project-info-reports:help is used to display help information on the Project Info Reports Plugin.
- project-info-reports:index is used to generate the Project index page.
- project-info-reports:issue-management is used to generate the Project Issue Management report.
- project-info-reports:licenses is used to generate the Project Licenses report.
- project-info-reports:mailing-lists is used to generate the Project Mailing Lists report.
- project-info-reports:modules is used to generate the Project Modules report.
- project-info-reports:plugin-management is used to generate the Project Plugin Management report.
- project-info-reports:plugins is used to generate the Project Plugins report.
- project-info-reports:team is used to generate the Project Team report.
- project-info-reports:scm is used to generate the Project Source Code Management report.
- project-info-reports:summary is used to generate the Project Summary report.
Incompatibility Notice
With the major version 3.0 several mojos and output filenames have been changed for alignment with their corresponding elements in the POM. In other words, mojos have the same names as their POM counterparts. To make you aware of that, see the following table for the upcoming changes:
Goal Name | New Goal Name | Output name | New Output Name |
---|---|---|---|
cim | ci-management | integration.html | ci-management.html |
mailing-list | mailing-lists | mail-lists.html | mailing-lists.html |
project-team | team | team-list.html | team.html |
license | licenses | license.html | licenses.html |
issue-management | issue-management | issue-tracking.html | issue-management.html |
scm | – | source-repository.html | scm.html |
summary | – | project-summary.html | summary.html |
Details about this change can be found in MPIR-323.
Usage
General instructions on how to use the Project Info Reports Plugin can be found on the usage page. Some more specific use cases are described in the examples given below.
If you feel like the plugin is missing a feature or has a defect, you can fill a feature request or bug report in our issue tracker. When creating a new issue, please provide a comprehensive description of your concern. Especially for fixing bugs it is crucial that the developers can reproduce your problem. For this reason, entire debug logs, POMs or most preferably little demo projects attached to the issue are very much appreciated. Of course, patches are welcome, too. Contributors can check out the project from our source repository and will find supplementary information in the guide to helping with Maven.
Examples
To provide you with better understanding on some usages of the Maven Project Info Reports Plugin, you can take a look into the following examples:
- Run Selective Reports
- Run Individual Reports
- Customize the SCM Report
- Overview of the reports generated for this plugin
Какими бывают Maven-репозитории
Maven-репозиторий — это директория, в которой находятся плагины, библиотеки, JAR и другие артефакты, необходимые для работы Maven.
Виды репозиториев:
- Централизованный. Вклад сообщества Maven. Здесь находятся все самые популярные и часто используемые библиотеки. Если Maven не находит нужную библиотеку в локальном репозитории, он обращается к центральному.
- Локальный. Директория, которая находится на локальном компьютере пользователя и хранит зависимости проекта. Локальный репозиторий по умолчанию создается в %USER_HOME%.
- Удаленный. Настраивается во избежание ошибок. Репозиторий необходим на случай, если Maven не нашел необходимые зависимости в централизованном репозитории. Для настройки удаленного репозитория нужно внести изменения в pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.projectgroup</groupId> <artifactId>Tutorials</artifactId> <version>1.0</version> <dependencies> <dependency> <groupId>net.proselyte.private-lib</groupId> <artifactId>private-lib</artifactId> <version>1.0.0</version> </dependency> <dependencies> <repositories> <repository> <id>proselyte.lib1</id> <url>http://download.proselyte.net/maven2/lib1</url> </repository> <repository> <id>proselyte.lib2</id> <url>http://download.proselyte.net/maven2/lib2</url> </repository> </repositories> </project>
Apache Maven Install Plugin
The Install Plugin is used during the install phase to add artifact(s) to the local repository. The Install Plugin uses the information in the POM (groupId, artifactId, version) to determine the proper location for the artifact within the local repository.
The local repository is the local cache where all artifacts needed for the build are stored. By default, it is located within the user’s home directory (~/.m2/repository) but the location can be configured in ~/.m2/settings.xml using the <localRepository> element.
Goals Overview
The Install Plugin has 3 goals:
- install:install is used to automatically install the project’s main artifact (the JAR, WAR or EAR), its POM and any attached artifacts (sources, javadoc, etc) produced by a particular project.
- install:install-file is mostly used to install an externally created artifact into the local repository, along with its POM. In that case the project information can be taken from an optionally specified pomFile, but can also be given using command line parameters.
- install:help displays help information on maven-install-plugin.
Important Note for Version 3.0.0+
The install:install goal does not support creating checksums anymore via -DcreateChecksum=true cause this option has been removed. Details can be found in MINSTALL-143.
Usage
General instructions on how to use the Install Plugin can be found on the usage page. Some more specific use cases are described in the examples given below.
If you feel like the plugin is missing a feature or has a defect, you can fill a feature request or bug report in our issue tracker. When creating a new issue, please provide a comprehensive description of your concern. Especially for fixing bugs it is crucial that the developers can reproduce your problem. For this reason, entire debug logs, POMs or most preferably little demo projects attached to the issue are very much appreciated. Of course, patches are welcome, too. Contributors can check out the project from our source repository and will find supplementary information in the guide to helping with Maven.
Examples
To provide you with better understanding on some usages of the Maven Install Plugin, you can take a look into the following examples:
- Installing a Custom POM
- Generating a Generic POM
- Creating Checksums
- Updating Release Info
- Installing an Artifact to a Specific Local Repository Path
- Installing Secondary Artifacts
User visible Changes
mvn --no-transfer-progress ....
or in short:
mvn -ntp ... ....
There had been an issues like MNG-6505 and MNG-6059 related to the construction of URL’s etc. within project, distributionManagement and scm part in the pom for multi module builds like this:
<project child.project.url.inherit.append.path="false"> <url>...</url> <scm child.scm.connection.inherit.append.path="false" child.scm.developerConnection.inherit.append.path="false" child.scm.url.inherit.append.path="false"> <connection>...</connection> <developerConnection>...</developerConnection> <url>...</url> </scm> <distributionManagement> <site child.site.url.inherit.append.path="false"> <url>...</url> </site> </distributionManagement> </project>