This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 66ed1439c69f06e4aca25d9b15edf22a77694f2f Author: Jean Helou <[email protected]> AuthorDate: Wed Nov 18 09:31:49 2020 +0100 JAMES-2124 Enforces strict dependency ordering in pom files This commit adds the sortpom-maven-plugin to the compile phase of the build. By default the plugin is configured to fail if it detects an incorrect dependency order in a pom. Because sorting xml by hand is fairly painful, this commit also adds a profile -PsortPom. When used this profile will change the plugin's configuration to sort dependencies in place. This will **modify** the pom files where ordering was incorrect. --- mpt/app/pom.xml | 22 ++++++++++++++++- pom.xml | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+), 1 deletion(-) diff --git a/mpt/app/pom.xml b/mpt/app/pom.xml index 701e817..5054953 100644 --- a/mpt/app/pom.xml +++ b/mpt/app/pom.xml @@ -56,6 +56,10 @@ interfaces to the MPT library.</description> <build> <plugins> + <?SORTPOM IGNORE?> + <!-- We need to run a specific execution of sortpom after the shade plugin has + generated the dependency reduced file and execution order is defined by order of + declaration --> <!-- Uber Jar --> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -79,7 +83,23 @@ interfaces to the MPT library.</description> </execution> </executions> </plugin> - + <plugin> + <groupId>com.github.ekryd.sortpom</groupId> + <artifactId>sortpom-maven-plugin</artifactId> + <executions> + <execution> + <id>sort-reduced-pom</id> + <goals> + <goal>sort</goal> + </goals> + <phase>package</phase> + <configuration> + <pomFile>dependency-reduced-pom.xml</pomFile> + </configuration> + </execution> + </executions> + </plugin> + <?SORTPOM RESUME?> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> diff --git a/pom.xml b/pom.xml index a054465..e9282ca 100644 --- a/pom.xml +++ b/pom.xml @@ -2741,6 +2741,48 @@ <version>1.0</version> </plugin> <plugin> + <groupId>com.github.ekryd.sortpom</groupId> + <artifactId>sortpom-maven-plugin</artifactId> + <version>2.12.0</version> + <configuration> + <createBackupFile>false</createBackupFile> + <expandEmptyElements>false</expandEmptyElements> + <keepBlankLines>true</keepBlankLines> + <nrOfIndentSpace>4</nrOfIndentSpace> + <sortDependencies>groupId,artifactId</sortDependencies> + <sortModules>true</sortModules> + <predefinedSortOrder>recommended_2008_06</predefinedSortOrder> + </configuration> + <executions> + <execution> + <id>strict-pom-ordering</id> + <goals> + <goal>verify</goal> + </goals> + <phase>validate</phase> + <configuration> + <verifyFail>Stop</verifyFail> + </configuration> + </execution> + <execution> + <!-- + Use -PsortPom to switch from verify and + fail to sort in place. Note that sort in place + will rewrite the pom files and may introduce + non-semantic changes in the xml: + - attribute ordering, + - empty tag format, + - whitespace + --> + <id>fix-pom-ordering</id> + <goals> + <goal>verify</goal> + </goals> + <phase>none</phase> + </execution> + </executions> + </plugin> + <plugin> <groupId>com.github.kongchen</groupId> <artifactId>swagger-maven-plugin</artifactId> <version>3.1.7</version> @@ -3203,6 +3245,10 @@ </pluginManagement> <plugins> <plugin> + <groupId>com.github.ekryd.sortpom</groupId> + <artifactId>sortpom-maven-plugin</artifactId> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-enforcer-plugin</artifactId> <executions> @@ -3391,6 +3437,33 @@ </build> </profile> <profile> + <id>sortPom</id> + <build> + <plugins> + <plugin> + <groupId>com.github.ekryd.sortpom</groupId> + <artifactId>sortpom-maven-plugin</artifactId> + <executions> + <execution> + <id>strict-pom-ordering</id> + <goals> + <goal>verify</goal> + </goals> + <phase>none</phase> + </execution> + <execution> + <id>fix-pom-ordering</id> + <goals> + <goal>verify</goal> + </goals> + <phase>validate</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + <profile> <id>partial-build</id> <build> <plugins> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
