[ https://issues.apache.org/jira/browse/MNGSITE-548?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17907875#comment-17907875 ]
ASF GitHub Bot commented on MNGSITE-548: ---------------------------------------- elharo commented on code in PR #593: URL: https://github.com/apache/maven-site/pull/593#discussion_r1895782709 ########## content/markdown/guides/mini/guide-multiple-subprojects-4.md: ########## @@ -0,0 +1,184 @@ +# Guide to Working with Multiple Subprojects in Maven 4 + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +(If you're working with Maven 3, please refer to the [Maven 3 edition of this guide](./guide-multiple-modules.html)) + +As seen in the introduction to the POM, Maven supports project aggregation in addition to project inheritance. +This section outlines how Maven processes projects with multiple subprojects, and how you can work with them more +effectively. + +## The Reactor + +The mechanism in Maven that handles projects with multiple subprojects is referred to as the _reactor_. +This part of the Maven core does the following: + +* Collects all the available subprojects to build +* Sorts the subprojects into the correct build order +* Selects which subprojects to build +* Builds the selected subprojects in order + +### Collecting subprojects + +Subprojects collection starts from one aggregator project. +That project defines the subprojects of which it consists using the `<subproject>` element. +This is a recursive process, so aggregators can have child subproject which are aggregators themselves. + +For this process to work, it does not matter which POM you start with. +Maven attempts to find the root of a multi-project setup, by traversing upwards in the directory structure until it +either finds a POM with a `.mvn` sibling directory or a POM with the `root` attribute set to true. +This allows Maven to resolve dependencies on subprojects from the same project, regardless of the location of +the starting POM. +When Maven fails to find the root, it assumes that the starting POM is the root. +For consistent behaviour, create a `.mvn` directory in the root directory of the project or set the `root` attribute in +the POM of the root project to true. + +There are two ways to point at a starting POM. +By default, Maven reads the `pom.xml` file in the working directory. +Using the file parameter (`--file` or `-f`), you can point to another POM. + +### Sorting subprojects + +Because subprojects within a multi-project setup build can depend on each other, it is important that the reactor sorts +all the +projects in a way that guarantees any project is built before it is required. + +The following relationships are honoured when sorting projects: + +* a project dependency on another subproject in the build +* a plugin declaration where the plugin is another subproject in the build +* a plugin dependency on another subproject in the build +* a build extension declaration on another subproject in the build +* the order declared in the `<subprojects>` element (if no other rule applies) + +Note that only "instantiated" references are used - `dependencyManagement` and `pluginManagement` elements do not cause +a change to the reactor sort order. + +### Selecting subprojects + +By default, Maven builds all subprojects it has collected. +However, you can select a subset of these subprojects to build using command line flags. +These flags come in three categories: + +* Inclusion and exclusion +* Relationships between subprojects +* Dealing with failures + +This section ends with how these flags relate to each other. + +#### Inclusion and exclusion + +Using `--projects` you can specify which subprojects to build. +You can do this by specifying a comma-delimited list of project selectors. +A project selector is a string that is composed of the `groupId:artifactId`, only `:artifactId` or the relative path to +a subproject. + +A subproject can be selected (default), or excluded from the build. +You exclude a subproject by prefixing the selector with a `!` or `-`. +To explicitly select a subproject, prefix it with a `+`. + +When a selector does not resolve to an existing subproject, Maven fails the build. +You can prevent this by adding the `?` prefix. +This prefix should always go after the other prefixes. + +#### Relationships between subprojects + +Subprojects inside a project can have two types of relationships: parent/child and dependency/dependent. + +When selecting a parent (aggregator), Maven automatically selects the child subprojects as well. +Similarly, Maven excludes child subprojects of an excluded parent (aggregator). +To prevent this recursive behaviour, combine `--projects` with `--non-recursive`. + +Maven knows about the dependencies between subprojects inside the multi-project setup. +Using `--also-make`, Maven includes all dependencies of the selected projects in the build. +Similarly, `--also-make-dependents` lets Maven include all subprojects which are dependent on the selected projects. Review Comment: are dependent --> depend ########## content/markdown/guides/mini/guide-multiple-subprojects-4.md: ########## @@ -0,0 +1,184 @@ +# Guide to Working with Multiple Subprojects in Maven 4 + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +(If you're working with Maven 3, please refer to the [Maven 3 edition of this guide](./guide-multiple-modules.html)) + +As seen in the introduction to the POM, Maven supports project aggregation in addition to project inheritance. +This section outlines how Maven processes projects with multiple subprojects, and how you can work with them more +effectively. + +## The Reactor + +The mechanism in Maven that handles projects with multiple subprojects is referred to as the _reactor_. +This part of the Maven core does the following: + +* Collects all the available subprojects to build +* Sorts the subprojects into the correct build order +* Selects which subprojects to build +* Builds the selected subprojects in order + +### Collecting subprojects + +Subprojects collection starts from one aggregator project. +That project defines the subprojects of which it consists using the `<subproject>` element. +This is a recursive process, so aggregators can have child subproject which are aggregators themselves. Review Comment: child subprojects ########## content/markdown/guides/mini/guide-multiple-subprojects-4.md: ########## @@ -0,0 +1,184 @@ +# Guide to Working with Multiple Subprojects in Maven 4 + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +(If you're working with Maven 3, please refer to the [Maven 3 edition of this guide](./guide-multiple-modules.html)) + +As seen in the introduction to the POM, Maven supports project aggregation in addition to project inheritance. +This section outlines how Maven processes projects with multiple subprojects, and how you can work with them more +effectively. + +## The Reactor + +The mechanism in Maven that handles projects with multiple subprojects is referred to as the _reactor_. +This part of the Maven core does the following: + +* Collects all the available subprojects to build +* Sorts the subprojects into the correct build order +* Selects which subprojects to build +* Builds the selected subprojects in order + +### Collecting subprojects + +Subprojects collection starts from one aggregator project. +That project defines the subprojects of which it consists using the `<subproject>` element. +This is a recursive process, so aggregators can have child subproject which are aggregators themselves. + +For this process to work, it does not matter which POM you start with. +Maven attempts to find the root of a multi-project setup, by traversing upwards in the directory structure until it +either finds a POM with a `.mvn` sibling directory or a POM with the `root` attribute set to true. +This allows Maven to resolve dependencies on subprojects from the same project, regardless of the location of +the starting POM. +When Maven fails to find the root, it assumes that the starting POM is the root. +For consistent behaviour, create a `.mvn` directory in the root directory of the project or set the `root` attribute in +the POM of the root project to true. + +There are two ways to point at a starting POM. +By default, Maven reads the `pom.xml` file in the working directory. +Using the file parameter (`--file` or `-f`), you can point to another POM. + +### Sorting subprojects + +Because subprojects within a multi-project setup build can depend on each other, it is important that the reactor sorts +all the +projects in a way that guarantees any project is built before it is required. Review Comment: any --> each ########## content/markdown/guides/mini/guide-multiple-subprojects-4.md: ########## @@ -0,0 +1,184 @@ +# Guide to Working with Multiple Subprojects in Maven 4 + +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> + +(If you're working with Maven 3, please refer to the [Maven 3 edition of this guide](./guide-multiple-modules.html)) + +As seen in the introduction to the POM, Maven supports project aggregation in addition to project inheritance. +This section outlines how Maven processes projects with multiple subprojects, and how you can work with them more +effectively. + +## The Reactor + +The mechanism in Maven that handles projects with multiple subprojects is referred to as the _reactor_. +This part of the Maven core does the following: + +* Collects all the available subprojects to build +* Sorts the subprojects into the correct build order +* Selects which subprojects to build +* Builds the selected subprojects in order + +### Collecting subprojects + +Subprojects collection starts from one aggregator project. +That project defines the subprojects of which it consists using the `<subproject>` element. +This is a recursive process, so aggregators can have child subproject which are aggregators themselves. + +For this process to work, it does not matter which POM you start with. +Maven attempts to find the root of a multi-project setup, by traversing upwards in the directory structure until it +either finds a POM with a `.mvn` sibling directory or a POM with the `root` attribute set to true. +This allows Maven to resolve dependencies on subprojects from the same project, regardless of the location of +the starting POM. +When Maven fails to find the root, it assumes that the starting POM is the root. +For consistent behaviour, create a `.mvn` directory in the root directory of the project or set the `root` attribute in +the POM of the root project to true. + +There are two ways to point at a starting POM. +By default, Maven reads the `pom.xml` file in the working directory. +Using the file parameter (`--file` or `-f`), you can point to another POM. + +### Sorting subprojects + +Because subprojects within a multi-project setup build can depend on each other, it is important that the reactor sorts +all the +projects in a way that guarantees any project is built before it is required. + +The following relationships are honoured when sorting projects: + +* a project dependency on another subproject in the build +* a plugin declaration where the plugin is another subproject in the build +* a plugin dependency on another subproject in the build +* a build extension declaration on another subproject in the build +* the order declared in the `<subprojects>` element (if no other rule applies) + +Note that only "instantiated" references are used - `dependencyManagement` and `pluginManagement` elements do not cause +a change to the reactor sort order. + +### Selecting subprojects + +By default, Maven builds all subprojects it has collected. +However, you can select a subset of these subprojects to build using command line flags. +These flags come in three categories: + +* Inclusion and exclusion +* Relationships between subprojects +* Dealing with failures + +This section ends with how these flags relate to each other. + +#### Inclusion and exclusion + +Using `--projects` you can specify which subprojects to build. +You can do this by specifying a comma-delimited list of project selectors. +A project selector is a string that is composed of the `groupId:artifactId`, only `:artifactId` or the relative path to +a subproject. + +A subproject can be selected (default), or excluded from the build. +You exclude a subproject by prefixing the selector with a `!` or `-`. +To explicitly select a subproject, prefix it with a `+`. + +When a selector does not resolve to an existing subproject, Maven fails the build. +You can prevent this by adding the `?` prefix. +This prefix should always go after the other prefixes. + +#### Relationships between subprojects + +Subprojects inside a project can have two types of relationships: parent/child and dependency/dependent. + +When selecting a parent (aggregator), Maven automatically selects the child subprojects as well. +Similarly, Maven excludes child subprojects of an excluded parent (aggregator). +To prevent this recursive behaviour, combine `--projects` with `--non-recursive`. + +Maven knows about the dependencies between subprojects inside the multi-project setup. +Using `--also-make`, Maven includes all dependencies of the selected projects in the build. +Similarly, `--also-make-dependents` lets Maven include all subprojects which are dependent on the selected projects. + +#### Dealing with failures + +There are several ways to customize how the reactor deals with failures. +`--fail-at-end` fails the build after building as many subprojects as possible. +In this case, subprojects that do not depend on a failed subproject, will still be built. Review Comment: subproject, will --> subproject will > Guide to work with subprojects uses old term of modules > ------------------------------------------------------- > > Key: MNGSITE-548 > URL: https://issues.apache.org/jira/browse/MNGSITE-548 > Project: Maven Project Web Site > Issue Type: Bug > Reporter: Matthias Bünger > Priority: Major > > Some months ago it was decided on the mailing list that with Maven 4 the > terms (and the XML element) "{{module}}" will be replaced by subproject. > The Maven 4 guide should represent that to match this. > The https://maven.apache.org/guides/mini/guide-multiple-modules-4.html -- This message was sent by Atlassian Jira (v8.20.10#820010)