[Git][java-team/maven-install-plugin][upstream] New upstream version 3.1.1

Emmanuel Bourg (@ebourg) gitlab at salsa.debian.org
Sat Jun 17 10:54:46 BST 2023



Emmanuel Bourg pushed to branch upstream at Debian Java Maintainers / maven-install-plugin


Commits:
446e2679 by Emmanuel Bourg at 2023-06-17T11:15:38+02:00
New upstream version 3.1.1
- - - - -


12 changed files:

- .asf.yaml
- .gitignore
- pom.xml
- src/main/java/org/apache/maven/plugins/install/InstallFileMojo.java
- src/main/java/org/apache/maven/plugins/install/InstallMojo.java
- src/test/java/org/apache/maven/plugins/install/InstallFileMojoTest.java
- src/test/java/org/apache/maven/plugins/install/InstallMojoTest.java
- src/test/java/org/apache/maven/plugins/install/stubs/AttachedArtifactStub0.java
- src/test/java/org/apache/maven/plugins/install/stubs/AttachedArtifactStub1.java
- src/test/java/org/apache/maven/plugins/install/stubs/InstallArtifactStub.java
- + src/test/resources/unit/install-file-from-local-repository-test/plugin-config.xml
- + src/test/resources/unit/install-file-from-local-repository-test/target/org/apache/maven/test/maven-install-test/1.0-SNAPSHOT/maven-install-test-1.0-SNAPSHOT.jar


Changes:

=====================================
.asf.yaml
=====================================
@@ -24,3 +24,9 @@ github:
     - maven-plugins
     - maven-install-plugin
     - maven
+  enabled_merge_buttons:
+    squash: true
+    merge: false
+    rebase: true
+  autolink_jira:
+    - MINSTALL
\ No newline at end of file


=====================================
.gitignore
=====================================
@@ -1,4 +1,5 @@
 target/
+!src/test/resources/unit/*/target
 .project
 .classpath
 .settings/


=====================================
pom.xml
=====================================
@@ -1,5 +1,4 @@
-<?xml version='1.0' encoding='UTF-8'?>
-
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
   Licensed to the Apache Software Foundation (ASF) under one
   or more contributor license agreements. See the NOTICE file
@@ -18,25 +17,34 @@
   specific language governing permissions and limitations
   under the License.
 -->
-
 <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>
 
   <parent>
     <groupId>org.apache.maven.plugins</groupId>
     <artifactId>maven-plugins</artifactId>
-    <version>37</version>
+    <version>39</version>
     <relativePath />
   </parent>
 
   <artifactId>maven-install-plugin</artifactId>
-  <version>3.1.0</version>
+  <version>3.1.1</version>
   <packaging>maven-plugin</packaging>
 
   <name>Apache Maven Install Plugin</name>
   <description>Copies the project artifacts to the user's local repository.</description>
   <inceptionYear>2004</inceptionYear>
 
+  <contributors>
+    <!-- alphabetic order -->
+    <contributor>
+      <name>Hermann Josef Hill</name>
+    </contributor>
+    <contributor>
+      <name>Ludwig Magnusson</name>
+    </contributor>
+  </contributors>
+
   <prerequisites>
     <maven>${mavenVersion}</maven>
   </prerequisites>
@@ -44,8 +52,8 @@
   <scm>
     <connection>scm:git:https://gitbox.apache.org/repos/asf/maven-install-plugin.git</connection>
     <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/maven-install-plugin.git</developerConnection>
+    <tag>maven-install-plugin-3.1.1</tag>
     <url>https://github.com/apache/maven-install-plugin/tree/${project.scm.tag}</url>
-    <tag>maven-install-plugin-3.1.0</tag>
   </scm>
   <issueManagement>
     <system>jira</system>
@@ -65,8 +73,10 @@
   <properties>
     <javaVersion>8</javaVersion>
     <mavenVersion>3.2.5</mavenVersion>
-    <aetherVersion>1.0.0.v20140518</aetherVersion> <!-- Maven bound -->
-    <slf4jVersion>1.7.5</slf4jVersion> <!-- Maven bound -->
+    <!-- Maven bound -->
+    <aetherVersion>1.0.0.v20140518</aetherVersion>
+    <!-- Maven bound -->
+    <slf4jVersion>1.7.5</slf4jVersion>
 
     <!-- plugin versions used in IT tests -->
     <mavenAntrunPluginVersion>3.1.0</mavenAntrunPluginVersion>
@@ -78,7 +88,7 @@
     <mavenSourcePluginVersion>3.2.1</mavenSourcePluginVersion>
     <mavenSurefirePluginVersion>3.0.0-M7</mavenSurefirePluginVersion>
 
-    <project.build.outputTimestamp>2022-11-13T22:11:59Z</project.build.outputTimestamp>
+    <project.build.outputTimestamp>2023-03-21T14:30:42Z</project.build.outputTimestamp>
   </properties>
 
   <dependencies>
@@ -117,7 +127,8 @@
       <groupId>org.eclipse.aether</groupId>
       <artifactId>aether-util</artifactId>
       <version>${aetherVersion}</version>
-      <scope>compile</scope> <!-- To work in Maven versions older than 3.9.0 -->
+      <!-- To work in Maven versions older than 3.9.0 -->
+      <scope>compile</scope>
     </dependency>
     <dependency>
       <groupId>org.codehaus.plexus</groupId>
@@ -143,7 +154,8 @@
       <version>3.3.0</version>
       <scope>test</scope>
     </dependency>
-    <dependency> <!-- used by maven-plugin-testing-harness, don't give it compile scope! -->
+    <dependency>
+      <!-- used by maven-plugin-testing-harness, don't give it compile scope! -->
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-compat</artifactId>
       <version>${mavenVersion}</version>
@@ -175,16 +187,6 @@
     </dependency>
   </dependencies>
 
-  <contributors>
-    <!-- alphabetic order -->
-    <contributor>
-      <name>Hermann Josef Hill</name>
-    </contributor>
-    <contributor>
-      <name>Ludwig Magnusson</name>
-    </contributor>
-  </contributors>
-
   <profiles>
     <profile>
       <id>run-its</id>


=====================================
src/main/java/org/apache/maven/plugins/install/InstallFileMojo.java
=====================================
@@ -1,5 +1,3 @@
-package org.apache.maven.plugins.install;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.plugins.install;
  * "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
+ *   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
@@ -18,6 +16,7 @@ package org.apache.maven.plugins.install;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.maven.plugins.install;
 
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -64,287 +63,245 @@ import org.eclipse.aether.util.artifact.SubArtifact;
 
 /**
  * Installs a file in the local repository.
- * 
+ *
  * @author <a href="mailto:brett at apache.org">Brett Porter</a>
  */
- at Mojo( name = "install-file", requiresProject = false, aggregator = true, threadSafe = true )
-public class InstallFileMojo
-        extends AbstractMojo
-{
-    private static final String LS = System.getProperty( "line.separator" );
+ at Mojo(name = "install-file", requiresProject = false, aggregator = true, threadSafe = true)
+public class InstallFileMojo extends AbstractMojo {
+    private static final String LS = System.getProperty("line.separator");
 
     @Component
     private RepositorySystem repositorySystem;
 
-    @Parameter( defaultValue = "${session}", required = true, readonly = true )
+    @Parameter(defaultValue = "${session}", required = true, readonly = true)
     private MavenSession session;
 
     /**
      * GroupId of the artifact to be installed. Retrieved from POM file if one is specified or extracted from
      * {@code pom.xml} in jar if available.
      */
-    @Parameter( property = "groupId" )
+    @Parameter(property = "groupId")
     private String groupId;
 
     /**
      * ArtifactId of the artifact to be installed. Retrieved from POM file if one is specified or extracted from
      * {@code pom.xml} in jar if available.
      */
-    @Parameter( property = "artifactId" )
+    @Parameter(property = "artifactId")
     private String artifactId;
 
     /**
      * Version of the artifact to be installed. Retrieved from POM file if one is specified or extracted from
      * {@code pom.xml} in jar if available.
      */
-    @Parameter( property = "version" )
+    @Parameter(property = "version")
     private String version;
 
     /**
      * Packaging type of the artifact to be installed. Retrieved from POM file if one is specified or extracted from
      * {@code pom.xml} in jar if available.
      */
-    @Parameter( property = "packaging" )
+    @Parameter(property = "packaging")
     private String packaging;
 
     /**
      * Classifier type of the artifact to be installed. For example, "sources" or "javadoc". Defaults to none which
      * means this is the project's main artifact.
-     * 
+     *
      * @since 2.2
      */
-    @Parameter( property = "classifier" )
+    @Parameter(property = "classifier")
     private String classifier;
 
     /**
      * The file to be installed in the local repository.
      */
-    @Parameter( property = "file", required = true )
+    @Parameter(property = "file", required = true)
     private File file;
 
     /**
      * The bundled API docs for the artifact.
-     * 
+     *
      * @since 2.3
      */
-    @Parameter( property = "javadoc" )
+    @Parameter(property = "javadoc")
     private File javadoc;
 
     /**
      * The bundled sources for the artifact.
-     * 
+     *
      * @since 2.3
      */
-    @Parameter( property = "sources" )
+    @Parameter(property = "sources")
     private File sources;
 
     /**
      * Location of an existing POM file to be installed alongside the main artifact, given by the {@link #file}
      * parameter.
-     * 
+     *
      * @since 2.1
      */
-    @Parameter( property = "pomFile" )
+    @Parameter(property = "pomFile")
     private File pomFile;
 
     /**
      * Generate a minimal POM for the artifact if none is supplied via the parameter {@link #pomFile}. Defaults to
      * <code>true</code> if there is no existing POM in the local repository yet.
-     * 
+     *
      * @since 2.1
      */
-    @Parameter( property = "generatePom" )
+    @Parameter(property = "generatePom")
     private Boolean generatePom;
 
     /**
      * The path for a specific local repository directory. If not specified the local repository path configured in the
      * Maven settings will be used.
-     * 
+     *
      * @since 2.2
      */
-    @Parameter( property = "localRepositoryPath" )
+    @Parameter(property = "localRepositoryPath")
     private File localRepositoryPath;
 
     @Override
-    public void execute()
-        throws MojoExecutionException, MojoFailureException
-    {
-        if ( !file.exists() )
-        {
+    public void execute() throws MojoExecutionException, MojoFailureException {
+        if (!file.exists()) {
             String message = "The specified file '" + file.getPath() + "' does not exist";
-            getLog().error( message );
-            throw new MojoFailureException( message );
+            getLog().error(message);
+            throw new MojoFailureException(message);
         }
 
         RepositorySystemSession repositorySystemSession = session.getRepositorySession();
-        if ( localRepositoryPath != null )
-        {
+        if (localRepositoryPath != null) {
             // "clone" repository session and replace localRepository
-            DefaultRepositorySystemSession newSession = new DefaultRepositorySystemSession(
-                    session.getRepositorySession() );
+            DefaultRepositorySystemSession newSession =
+                    new DefaultRepositorySystemSession(session.getRepositorySession());
             // Clear cache, since we're using a new local repository
-            newSession.setCache( new DefaultRepositoryCache() );
+            newSession.setCache(new DefaultRepositoryCache());
             // keep same repositoryType
             String contentType = newSession.getLocalRepository().getContentType();
-            if ( "enhanced".equals( contentType ) )
-            {
+            if ("enhanced".equals(contentType)) {
                 contentType = "default";
             }
-            LocalRepositoryManager localRepositoryManager = repositorySystem.newLocalRepositoryManager( newSession,
-                    new LocalRepository( localRepositoryPath, contentType ) );
-            newSession.setLocalRepositoryManager( localRepositoryManager );
+            LocalRepositoryManager localRepositoryManager = repositorySystem.newLocalRepositoryManager(
+                    newSession, new LocalRepository(localRepositoryPath, contentType));
+            newSession.setLocalRepositoryManager(localRepositoryManager);
             repositorySystemSession = newSession;
-            getLog().debug( "localRepoPath: " + localRepositoryManager.getRepository().getBasedir() );
+            getLog().debug("localRepoPath: "
+                    + localRepositoryManager.getRepository().getBasedir());
         }
 
         File temporaryPom = null;
 
-        if ( pomFile != null )
-        {
-            processModel( readModel( pomFile ) );
-        }
-        else
-        {
+        if (pomFile != null) {
+            processModel(readModel(pomFile));
+        } else {
             temporaryPom = readingPomFromJarFile();
-            if ( !Boolean.TRUE.equals( generatePom ) )
-            {
+            if (!Boolean.TRUE.equals(generatePom)) {
                 pomFile = temporaryPom;
-                getLog().debug( "Using JAR embedded POM as pomFile" );
+                getLog().debug("Using JAR embedded POM as pomFile");
             }
         }
 
-        if ( groupId == null || artifactId == null || version == null || packaging == null )
-        {
-            throw new MojoExecutionException( "The artifact information is incomplete: 'groupId', 'artifactId', "
-                    + "'version' and 'packaging' are required." );
+        if (groupId == null || artifactId == null || version == null || packaging == null) {
+            throw new MojoExecutionException("The artifact information is incomplete: 'groupId', 'artifactId', "
+                    + "'version' and 'packaging' are required.");
         }
 
-        if ( !isValidId( groupId )
-                || !isValidId( artifactId )
-                || !isValidVersion( version ) )
-        {
-            throw new MojoExecutionException( "The artifact information is not valid: uses invalid characters." );
+        if (!isValidId(groupId) || !isValidId(artifactId) || !isValidVersion(version)) {
+            throw new MojoExecutionException("The artifact information is not valid: uses invalid characters.");
         }
 
         InstallRequest installRequest = new InstallRequest();
 
-        boolean isFilePom = classifier == null && "pom".equals( packaging );
-        if ( !isFilePom )
-        {
-            ArtifactType artifactType = repositorySystemSession.getArtifactTypeRegistry().get( packaging );
-            if ( artifactType != null
-                    && StringUtils.isEmpty( classifier )
-                    && !StringUtils.isEmpty( artifactType.getClassifier() ) )
-            {
+        boolean isFilePom = classifier == null && "pom".equals(packaging);
+        if (!isFilePom) {
+            ArtifactType artifactType =
+                    repositorySystemSession.getArtifactTypeRegistry().get(packaging);
+            if (artifactType != null
+                    && StringUtils.isEmpty(classifier)
+                    && !StringUtils.isEmpty(artifactType.getClassifier())) {
                 classifier = artifactType.getClassifier();
             }
         }
         Artifact mainArtifact = new DefaultArtifact(
-                groupId,
-                artifactId,
-                classifier,
-                isFilePom ? "pom" : getExtension( file ),
-                version
-        ).setFile( file );
-        installRequest.addArtifact( mainArtifact );
-
-        File artifactLocalFile = getLocalRepositoryFile( session.getRepositorySession(), mainArtifact );
-        File pomLocalFile = getPomLocalRepositoryFile( session.getRepositorySession(), mainArtifact );
-
-        if ( file.equals( artifactLocalFile ) )
-        {
-            throw new MojoFailureException( "Cannot install artifact. "
-                + "Artifact is already in the local repository." + LS + LS + "File in question is: " + file + LS );
+                        groupId, artifactId, classifier, isFilePom ? "pom" : getExtension(file), version)
+                .setFile(file);
+        installRequest.addArtifact(mainArtifact);
+
+        File artifactLocalFile = getLocalRepositoryFile(repositorySystemSession, mainArtifact);
+        File pomLocalFile = getPomLocalRepositoryFile(repositorySystemSession, mainArtifact);
+
+        if (file.equals(artifactLocalFile)) {
+            throw new MojoFailureException("Cannot install artifact. " + "Artifact is already in the local repository."
+                    + LS + LS + "File in question is: " + file + LS);
         }
 
-        if ( !"pom".equals( packaging ) )
-        {
-            if ( pomFile != null )
-            {
-                installRequest.addArtifact( new SubArtifact( mainArtifact, "", "pom", pomFile ) );
-            }
-            else
-            {
-                if ( Boolean.TRUE.equals( generatePom ) || ( generatePom == null && !pomLocalFile.exists() ) )
-                {
+        if (!"pom".equals(packaging)) {
+            if (pomFile != null) {
+                installRequest.addArtifact(new SubArtifact(mainArtifact, "", "pom", pomFile));
+            } else {
+                if (Boolean.TRUE.equals(generatePom) || (generatePom == null && !pomLocalFile.exists())) {
                     temporaryPom = generatePomFile();
-                    getLog().debug( "Installing generated POM" );
-                    installRequest.addArtifact( new SubArtifact( mainArtifact, "", "pom", temporaryPom ) );
-                }
-                else if ( generatePom == null )
-                {
-                    getLog().debug( "Skipping installation of generated POM, already present in local repository" );
+                    getLog().debug("Installing generated POM");
+                    installRequest.addArtifact(new SubArtifact(mainArtifact, "", "pom", temporaryPom));
+                } else if (generatePom == null) {
+                    getLog().debug("Skipping installation of generated POM, already present in local repository");
                 }
             }
         }
 
-        if ( sources != null )
-        {
-            installRequest.addArtifact( new SubArtifact( mainArtifact, "sources", "jar", sources ) );
+        if (sources != null) {
+            installRequest.addArtifact(new SubArtifact(mainArtifact, "sources", "jar", sources));
         }
 
-        if ( javadoc != null )
-        {
-            installRequest.addArtifact( new SubArtifact( mainArtifact, "javadoc", "jar", javadoc ) );
+        if (javadoc != null) {
+            installRequest.addArtifact(new SubArtifact(mainArtifact, "javadoc", "jar", javadoc));
         }
 
-        try
-        {
-            repositorySystem.install( repositorySystemSession, installRequest );
-        }
-        catch ( InstallationException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
-        }
-        finally
-        {
-            if ( temporaryPom != null )
-            {
+        try {
+            repositorySystem.install(repositorySystemSession, installRequest);
+        } catch (InstallationException e) {
+            throw new MojoExecutionException(e.getMessage(), e);
+        } finally {
+            if (temporaryPom != null) {
                 // noinspection ResultOfMethodCallIgnored
                 temporaryPom.delete();
             }
         }
     }
 
-    private File readingPomFromJarFile()
-        throws MojoExecutionException
-    {
+    private File readingPomFromJarFile() throws MojoExecutionException {
         File pomFile = null;
 
         JarFile jarFile = null;
-        try
-        {
-            Pattern pomEntry = Pattern.compile( "META-INF/maven/.*/pom\\.xml" );
+        try {
+            Pattern pomEntry = Pattern.compile("META-INF/maven/.*/pom\\.xml");
 
-            jarFile = new JarFile( file );
+            jarFile = new JarFile(file);
 
             Enumeration<JarEntry> jarEntries = jarFile.entries();
 
-            while ( jarEntries.hasMoreElements() )
-            {
+            while (jarEntries.hasMoreElements()) {
                 JarEntry entry = jarEntries.nextElement();
 
-                if ( pomEntry.matcher( entry.getName() ).matches() )
-                {
-                    getLog().debug( "Loading " + entry.getName() );
+                if (pomEntry.matcher(entry.getName()).matches()) {
+                    getLog().debug("Loading " + entry.getName());
 
                     InputStream pomInputStream = null;
                     OutputStream pomOutputStream = null;
 
-                    try
-                    {
-                        pomInputStream = jarFile.getInputStream( entry );
+                    try {
+                        pomInputStream = jarFile.getInputStream(entry);
 
                         String base = file.getName();
-                        if ( base.indexOf( '.' ) > 0 )
-                        {
-                            base = base.substring( 0, base.lastIndexOf( '.' ) );
+                        if (base.indexOf('.') > 0) {
+                            base = base.substring(0, base.lastIndexOf('.'));
                         }
-                        pomFile = File.createTempFile( base, ".pom" );
+                        pomFile = File.createTempFile(base, ".pom");
 
-                        pomOutputStream = Files.newOutputStream( pomFile.toPath() );
+                        pomOutputStream = Files.newOutputStream(pomFile.toPath());
 
-                        IOUtil.copy( pomInputStream, pomOutputStream );
+                        IOUtil.copy(pomInputStream, pomOutputStream);
 
                         pomOutputStream.close();
                         pomOutputStream = null;
@@ -352,37 +309,26 @@ public class InstallFileMojo
                         pomInputStream.close();
                         pomInputStream = null;
 
-                        processModel( readModel( pomFile ) );
+                        processModel(readModel(pomFile));
 
                         break;
-                    }
-                    finally
-                    {
-                        IOUtil.close( pomInputStream );
-                        IOUtil.close( pomOutputStream );
+                    } finally {
+                        IOUtil.close(pomInputStream);
+                        IOUtil.close(pomOutputStream);
                     }
                 }
             }
 
-            if ( pomFile == null )
-            {
-                getLog().info( "pom.xml not found in " + file.getName() );
+            if (pomFile == null) {
+                getLog().info("pom.xml not found in " + file.getName());
             }
-        }
-        catch ( IOException e )
-        {
+        } catch (IOException e) {
             // ignore, artifact not packaged by Maven
-        }
-        finally
-        {
-            if ( jarFile != null )
-            {
-                try
-                {
+        } finally {
+            if (jarFile != null) {
+                try {
                     jarFile.close();
-                }
-                catch ( IOException e )
-                {
+                } catch (IOException e) {
                     // we did our best
                 }
             }
@@ -392,93 +338,74 @@ public class InstallFileMojo
 
     /**
      * Parses a POM.
-     * 
+     *
      * @param pomFile The path of the POM file to parse, must not be <code>null</code>.
      * @return The model from the POM file, never <code>null</code>.
      * @throws MojoExecutionException If the POM could not be parsed.
      */
-    private Model readModel( File pomFile )
-        throws MojoExecutionException
-    {
+    private Model readModel(File pomFile) throws MojoExecutionException {
         Reader reader = null;
-        try
-        {
-            reader = new XmlStreamReader( pomFile );
-            final Model model = new MavenXpp3Reader().read( reader );
+        try {
+            reader = new XmlStreamReader(pomFile);
+            final Model model = new MavenXpp3Reader().read(reader);
             reader.close();
             reader = null;
             return model;
-        }
-        catch ( FileNotFoundException e )
-        {
-            throw new MojoExecutionException( "File not found " + pomFile, e );
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error reading POM " + pomFile, e );
-        }
-        catch ( XmlPullParserException e )
-        {
-            throw new MojoExecutionException( "Error parsing POM " + pomFile, e );
-        }
-        finally
-        {
-            IOUtil.close( reader );
+        } catch (FileNotFoundException e) {
+            throw new MojoExecutionException("File not found " + pomFile, e);
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error reading POM " + pomFile, e);
+        } catch (XmlPullParserException e) {
+            throw new MojoExecutionException("Error parsing POM " + pomFile, e);
+        } finally {
+            IOUtil.close(reader);
         }
     }
 
     /**
      * Populates missing mojo parameters from the specified POM.
-     * 
+     *
      * @param model The POM to extract missing artifact coordinates from, must not be <code>null</code>.
      */
-    private void processModel( Model model )
-    {
+    private void processModel(Model model) {
         Parent parent = model.getParent();
 
-        if ( this.groupId == null )
-        {
+        if (this.groupId == null) {
             this.groupId = model.getGroupId();
-            if ( this.groupId == null && parent != null )
-            {
+            if (this.groupId == null && parent != null) {
                 this.groupId = parent.getGroupId();
             }
         }
-        if ( this.artifactId == null )
-        {
+        if (this.artifactId == null) {
             this.artifactId = model.getArtifactId();
         }
-        if ( this.version == null )
-        {
+        if (this.version == null) {
             this.version = model.getVersion();
-            if ( this.version == null && parent != null )
-            {
+            if (this.version == null && parent != null) {
                 this.version = parent.getVersion();
             }
         }
-        if ( this.packaging == null )
-        {
+        if (this.packaging == null) {
             this.packaging = model.getPackaging();
         }
     }
 
     /**
      * Generates a minimal model from the user-supplied artifact information.
-     * 
+     *
      * @return The generated model, never <code>null</code>.
      */
-    private Model generateModel()
-    {
+    private Model generateModel() {
         Model model = new Model();
 
-        model.setModelVersion( "4.0.0" );
+        model.setModelVersion("4.0.0");
 
-        model.setGroupId( groupId );
-        model.setArtifactId( artifactId );
-        model.setVersion( version );
-        model.setPackaging( packaging );
+        model.setGroupId(groupId);
+        model.setArtifactId(artifactId);
+        model.setVersion(version);
+        model.setPackaging(packaging);
 
-        model.setDescription( "POM was created from install:install-file" );
+        model.setDescription("POM was created from install:install-file");
 
         return model;
     }
@@ -486,34 +413,27 @@ public class InstallFileMojo
     /**
      * Generates a (temporary) POM file from the plugin configuration. It's the responsibility of the caller to delete
      * the generated file when no longer needed.
-     * 
+     *
      * @return The path to the generated POM file, never <code>null</code>.
      * @throws MojoExecutionException If the POM file could not be generated.
      */
-    private File generatePomFile()
-        throws MojoExecutionException
-    {
+    private File generatePomFile() throws MojoExecutionException {
         Model model = generateModel();
 
         Writer writer = null;
-        try
-        {
-            File pomFile = File.createTempFile( "mvninstall", ".pom" );
+        try {
+            File pomFile = File.createTempFile("mvninstall", ".pom");
 
-            writer = new XmlStreamWriter( pomFile );
-            new MavenXpp3Writer().write( writer, model );
+            writer = new XmlStreamWriter(pomFile);
+            new MavenXpp3Writer().write(writer, model);
             writer.close();
             writer = null;
 
             return pomFile;
-        }
-        catch ( IOException e )
-        {
-            throw new MojoExecutionException( "Error writing temporary POM file: " + e.getMessage(), e );
-        }
-        finally
-        {
-            IOUtil.close( writer );
+        } catch (IOException e) {
+            throw new MojoExecutionException("Error writing temporary POM file: " + e.getMessage(), e);
+        } finally {
+            IOUtil.close(writer);
         }
     }
 
@@ -521,21 +441,19 @@ public class InstallFileMojo
      * Gets the path of the specified artifact within the local repository. Note that the returned path need not exist
      * (yet).
      */
-    private File getLocalRepositoryFile( RepositorySystemSession session, Artifact artifact )
-    {
-        String path = session.getLocalRepositoryManager().getPathForLocalArtifact( artifact );
-        return new File( session.getLocalRepository().getBasedir(), path );
+    private File getLocalRepositoryFile(RepositorySystemSession session, Artifact artifact) {
+        String path = session.getLocalRepositoryManager().getPathForLocalArtifact(artifact);
+        return new File(session.getLocalRepository().getBasedir(), path);
     }
 
     /**
      * Gets the path of the specified artifact POM within the local repository. Note that the returned path need
      * not exist (yet).
      */
-    private File getPomLocalRepositoryFile( RepositorySystemSession session, Artifact artifact )
-    {
-        SubArtifact pomArtifact = new SubArtifact( artifact, "", "pom" );
-        String path = session.getLocalRepositoryManager().getPathForLocalArtifact( pomArtifact );
-        return new File( session.getLocalRepository().getBasedir(), path );
+    private File getPomLocalRepositoryFile(RepositorySystemSession session, Artifact artifact) {
+        SubArtifact pomArtifact = new SubArtifact(artifact, "", "pom");
+        String path = session.getLocalRepositoryManager().getPathForLocalArtifact(pomArtifact);
+        return new File(session.getLocalRepository().getBasedir(), path);
     }
 
     // these below should be shared (duplicated in m-install-p, m-deploy-p)
@@ -543,34 +461,30 @@ public class InstallFileMojo
     /**
      * Specialization of {@link FileUtils#getExtension(String)} that honors various {@code tar.xxx} combinations.
      */
-    private String getExtension( final File file )
-    {
+    private String getExtension(final File file) {
         String filename = file.getName();
-        if ( filename.contains( ".tar." ) )
-        {
-            return "tar." + FileUtils.getExtension( filename );
-        }
-        else
-        {
-            return FileUtils.getExtension( filename );
+        if (filename.contains(".tar.")) {
+            return "tar." + FileUtils.getExtension(filename);
+        } else {
+            return FileUtils.getExtension(filename);
         }
     }
 
     /**
      * Returns {@code true} if passed in string is "valid Maven ID" (groupId or artifactId).
      */
-    private boolean isValidId( String id )
-    {
-        if ( id == null )
-        {
+    private boolean isValidId(String id) {
+        if (id == null) {
             return false;
         }
-        for ( int i = 0; i < id.length(); i++ )
-        {
-            char c = id.charAt( i );
-            if ( !( c >= 'a' && c <= 'z' || c >= 'A' && c <= 'Z'
-                    || c >= '0' && c <= '9' || c == '-' || c == '_' || c == '.' ) )
-            {
+        for (int i = 0; i < id.length(); i++) {
+            char c = id.charAt(i);
+            if (!(c >= 'a' && c <= 'z'
+                    || c >= 'A' && c <= 'Z'
+                    || c >= '0' && c <= '9'
+                    || c == '-'
+                    || c == '_'
+                    || c == '.')) {
                 return false;
             }
         }
@@ -582,20 +496,15 @@ public class InstallFileMojo
     /**
      * Returns {@code true} if passed in string is "valid Maven (simple. non range, expression, etc) version".
      */
-    private boolean isValidVersion( String version )
-    {
-        if ( version == null )
-        {
+    private boolean isValidVersion(String version) {
+        if (version == null) {
             return false;
         }
-        for ( int i = version.length() - 1; i >= 0; i-- )
-        {
-            if ( ILLEGAL_VERSION_CHARS.indexOf( version.charAt( i ) ) >= 0 )
-            {
+        for (int i = version.length() - 1; i >= 0; i--) {
+            if (ILLEGAL_VERSION_CHARS.indexOf(version.charAt(i)) >= 0) {
                 return false;
             }
         }
         return true;
     }
-
 }


=====================================
src/main/java/org/apache/maven/plugins/install/InstallMojo.java
=====================================
@@ -1,5 +1,3 @@
-package org.apache.maven.plugins.install;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.plugins.install;
  * "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
+ *   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
@@ -18,6 +16,7 @@ package org.apache.maven.plugins.install;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.maven.plugins.install;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -47,23 +46,21 @@ import org.eclipse.aether.installation.InstallationException;
  *
  * @author <a href="mailto:evenisse at apache.org">Emmanuel Venisse</a>
  */
- at Mojo( name = "install", defaultPhase = LifecyclePhase.INSTALL, threadSafe = true )
-public class InstallMojo
-        extends AbstractMojo
-{
+ at Mojo(name = "install", defaultPhase = LifecyclePhase.INSTALL, threadSafe = true)
+public class InstallMojo extends AbstractMojo {
     @Component
     private RepositorySystem repositorySystem;
 
-    @Parameter( defaultValue = "${session}", required = true, readonly = true )
+    @Parameter(defaultValue = "${session}", required = true, readonly = true)
     private MavenSession session;
 
-    @Parameter( defaultValue = "${project}", readonly = true, required = true )
+    @Parameter(defaultValue = "${project}", readonly = true, required = true)
     private MavenProject project;
 
-    @Parameter( defaultValue = "${reactorProjects}", required = true, readonly = true )
+    @Parameter(defaultValue = "${reactorProjects}", required = true, readonly = true)
     private List<MavenProject> reactorProjects;
 
-    @Parameter( defaultValue = "${plugin}", required = true, readonly = true )
+    @Parameter(defaultValue = "${plugin}", required = true, readonly = true)
     private PluginDescriptor pluginDescriptor;
 
     /**
@@ -73,7 +70,7 @@ public class InstallMojo
      *
      * @since 2.5
      */
-    @Parameter( defaultValue = "false", property = "installAtEnd" )
+    @Parameter(defaultValue = "false", property = "installAtEnd")
     private boolean installAtEnd;
 
     /**
@@ -82,127 +79,112 @@ public class InstallMojo
      *
      * @since 2.4
      */
-    @Parameter( property = "maven.install.skip", defaultValue = "false" )
+    @Parameter(property = "maven.install.skip", defaultValue = "false")
     private boolean skip;
 
-    private enum State
-    {
-        SKIPPED, INSTALLED, TO_BE_INSTALLED
+    /**
+     * Set this to <code>true</code> to allow incomplete project processing. By default, such projects are forbidden
+     * and Mojo will fail to process them. Incomplete project is a Maven Project that has any other packaging than
+     * "pom" and has no main artifact packaged. In the majority of cases, what user really wants here is a project
+     * with "pom" packaging and some classified artifact attached (typical example is some assembly being packaged
+     * and attached with classifier).
+     *
+     * @since 3.1.1
+     */
+    @Parameter(defaultValue = "false", property = "allowIncompleteProjects")
+    private boolean allowIncompleteProjects;
+
+    private enum State {
+        SKIPPED,
+        INSTALLED,
+        TO_BE_INSTALLED
     }
 
     private static final String INSTALL_PROCESSED_MARKER = InstallMojo.class.getName() + ".processed";
 
-    private void putState( State state )
-    {
-        getPluginContext().put( INSTALL_PROCESSED_MARKER, state.name() );
+    private void putState(State state) {
+        getPluginContext().put(INSTALL_PROCESSED_MARKER, state.name());
     }
 
-    private State getState( MavenProject project )
-    {
-        Map<String, Object> pluginContext = session.getPluginContext( pluginDescriptor, project );
-        return State.valueOf( (String) pluginContext.get( INSTALL_PROCESSED_MARKER ) );
+    private State getState(MavenProject project) {
+        Map<String, Object> pluginContext = session.getPluginContext(pluginDescriptor, project);
+        return State.valueOf((String) pluginContext.get(INSTALL_PROCESSED_MARKER));
     }
 
-    private boolean hasState( MavenProject project )
-    {
-        Map<String, Object> pluginContext = session.getPluginContext( pluginDescriptor, project );
-        return pluginContext.containsKey( INSTALL_PROCESSED_MARKER );
+    private boolean hasState(MavenProject project) {
+        Map<String, Object> pluginContext = session.getPluginContext(pluginDescriptor, project);
+        return pluginContext.containsKey(INSTALL_PROCESSED_MARKER);
     }
 
     @Override
-    public void execute()
-        throws MojoExecutionException
-    {
-        if ( skip )
-        {
-            getLog().info( "Skipping artifact installation" );
-            putState( State.SKIPPED );
-        }
-        else
-        {
-            if ( !installAtEnd )
-            {
+    public void execute() throws MojoExecutionException {
+        if (skip) {
+            getLog().info("Skipping artifact installation");
+            putState(State.SKIPPED);
+        } else {
+            if (!installAtEnd) {
                 InstallRequest request = new InstallRequest();
-                processProject( project, request );
-                installProject( request );
-                putState( State.INSTALLED );
-            }
-            else
-            {
-                getLog().info( "Deferring install for " + project.getGroupId()
-                        + ":" + project.getArtifactId() + ":" + project.getVersion() + " at end" );
-                putState( State.TO_BE_INSTALLED );
+                processProject(project, request);
+                installProject(request);
+                putState(State.INSTALLED);
+            } else {
+                getLog().info("Deferring install for " + project.getGroupId() + ":" + project.getArtifactId() + ":"
+                        + project.getVersion() + " at end");
+                putState(State.TO_BE_INSTALLED);
             }
         }
 
         List<MavenProject> allProjectsUsingPlugin = getAllProjectsUsingPlugin();
 
-        if ( allProjectsMarked( allProjectsUsingPlugin ) )
-        {
+        if (allProjectsMarked(allProjectsUsingPlugin)) {
             InstallRequest request = new InstallRequest();
-            for ( MavenProject reactorProject : allProjectsUsingPlugin )
-            {
-                State state = getState( reactorProject );
-                if ( state == State.TO_BE_INSTALLED )
-                {
-                    processProject( reactorProject, request );
+            for (MavenProject reactorProject : allProjectsUsingPlugin) {
+                State state = getState(reactorProject);
+                if (state == State.TO_BE_INSTALLED) {
+                    processProject(reactorProject, request);
                 }
             }
-            installProject( request );
+            installProject(request);
         }
     }
 
-    private boolean allProjectsMarked( List<MavenProject> allProjectsUsingPlugin )
-    {
-        for ( MavenProject reactorProject : allProjectsUsingPlugin )
-        {
-            if ( !hasState( reactorProject ) )
-            {
+    private boolean allProjectsMarked(List<MavenProject> allProjectsUsingPlugin) {
+        for (MavenProject reactorProject : allProjectsUsingPlugin) {
+            if (!hasState(reactorProject)) {
                 return false;
             }
         }
         return true;
     }
 
-    private List<MavenProject> getAllProjectsUsingPlugin()
-    {
+    private List<MavenProject> getAllProjectsUsingPlugin() {
         ArrayList<MavenProject> result = new ArrayList<>();
-        for ( MavenProject reactorProject : reactorProjects )
-        {
-            if ( hasExecution( reactorProject.getPlugin( "org.apache.maven.plugins:maven-install-plugin" ) ) )
-            {
-                result.add( reactorProject );
+        for (MavenProject reactorProject : reactorProjects) {
+            if (hasExecution(reactorProject.getPlugin("org.apache.maven.plugins:maven-install-plugin"))) {
+                result.add(reactorProject);
             }
         }
         return result;
     }
 
-    private boolean hasExecution( Plugin plugin )
-    {
-        if ( plugin == null )
-        {
+    private boolean hasExecution(Plugin plugin) {
+        if (plugin == null) {
             return false;
         }
 
-        for ( PluginExecution execution : plugin.getExecutions() )
-        {
-            if ( !execution.getGoals().isEmpty() && !"none".equalsIgnoreCase( execution.getPhase() ) )
-            {
+        for (PluginExecution execution : plugin.getExecutions()) {
+            if (!execution.getGoals().isEmpty() && !"none".equalsIgnoreCase(execution.getPhase())) {
                 return true;
             }
         }
         return false;
     }
 
-    private void installProject( InstallRequest request ) throws MojoExecutionException
-    {
-        try
-        {
-            repositorySystem.install( session.getRepositorySession(), request );
-        }
-        catch ( InstallationException e )
-        {
-            throw new MojoExecutionException( e.getMessage(), e );
+    private void installProject(InstallRequest request) throws MojoExecutionException {
+        try {
+            repositorySystem.install(session.getRepositorySession(), request);
+        } catch (InstallationException e) {
+            throw new MojoExecutionException(e.getMessage(), e);
         }
     }
 
@@ -211,46 +193,42 @@ public class InstallMojo
      *
      * @throws MojoExecutionException if project is badly set up.
      */
-    private void processProject( MavenProject project, InstallRequest request ) throws MojoExecutionException
-    {
-        if ( isFile( project.getFile() ) )
-        {
-            request.addArtifact( RepositoryUtils.toArtifact( new ProjectArtifact( project ) ) );
-        }
-        else
-        {
-            throw new MojoExecutionException( "The project POM could not be attached" );
+    private void processProject(MavenProject project, InstallRequest request) throws MojoExecutionException {
+        if (isFile(project.getFile())) {
+            request.addArtifact(RepositoryUtils.toArtifact(new ProjectArtifact(project)));
+        } else {
+            throw new MojoExecutionException("The project POM could not be attached");
         }
 
-        if ( !"pom".equals( project.getPackaging() ) )
-        {
+        if (!"pom".equals(project.getPackaging())) {
             org.apache.maven.artifact.Artifact mavenMainArtifact = project.getArtifact();
-            if ( isFile( mavenMainArtifact.getFile() ) )
-            {
-                request.addArtifact( RepositoryUtils.toArtifact( mavenMainArtifact ) );
-            }
-            else if ( !project.getAttachedArtifacts().isEmpty() )
-            {
-                throw new MojoExecutionException( "The packaging plugin for this project did not assign "
-                        + "a main file to the project but it has attachments. Change packaging to 'pom'." );
-            }
-            else
-            {
-                throw new MojoExecutionException( "The packaging for this project did not assign "
-                        + "a file to the build artifact" );
+            if (isFile(mavenMainArtifact.getFile())) {
+                request.addArtifact(RepositoryUtils.toArtifact(mavenMainArtifact));
+            } else if (!project.getAttachedArtifacts().isEmpty()) {
+                if (allowIncompleteProjects) {
+                    getLog().warn("");
+                    getLog().warn("The packaging plugin for this project did not assign");
+                    getLog().warn("a main file to the project but it has attachments. Change packaging to 'pom'.");
+                    getLog().warn("");
+                    getLog().warn("Incomplete projects like this will fail in future Maven versions!");
+                    getLog().warn("");
+                } else {
+                    throw new MojoExecutionException("The packaging plugin for this project did not assign "
+                            + "a main file to the project but it has attachments. Change packaging to 'pom'.");
+                }
+            } else {
+                throw new MojoExecutionException(
+                        "The packaging for this project did not assign a file to the build artifact");
             }
         }
 
-
-        for ( org.apache.maven.artifact.Artifact attached : project.getAttachedArtifacts() )
-        {
-            getLog().debug( "Attaching for install: " + attached.getId() );
-            request.addArtifact( RepositoryUtils.toArtifact( attached ) );
+        for (org.apache.maven.artifact.Artifact attached : project.getAttachedArtifacts()) {
+            getLog().debug("Attaching for install: " + attached.getId());
+            request.addArtifact(RepositoryUtils.toArtifact(attached));
         }
     }
 
-    private boolean isFile( File file )
-    {
+    private boolean isFile(File file) {
         return file != null && file.isFile();
     }
 }


=====================================
src/test/java/org/apache/maven/plugins/install/InstallFileMojoTest.java
=====================================
@@ -1,5 +1,3 @@
-package org.apache.maven.plugins.install;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.plugins.install;
  * "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
+ *   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
@@ -18,6 +16,7 @@ package org.apache.maven.plugins.install;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.maven.plugins.install;
 
 import java.io.File;
 import java.io.Reader;
@@ -41,9 +40,7 @@ import static org.mockito.Mockito.when;
 /**
  * @author <a href="mailto:aramirez at apache.org">Allan Ramirez</a>
  */
-public class InstallFileMojoTest
-    extends AbstractMojoTestCase
-{
+public class InstallFileMojoTest extends AbstractMojoTestCase {
     private String groupId;
 
     private String artifactId;
@@ -58,237 +55,298 @@ public class InstallFileMojoTest
 
     private final String LOCAL_REPO = "target/local-repo/";
 
-    public void setUp()
-        throws Exception
-    {
+    private final String SPECIFIC_LOCAL_REPO = "target/specific-local-repo/";
+
+    public void setUp() throws Exception {
         super.setUp();
 
-        FileUtils.deleteDirectory( new File( getBasedir() + "/" + LOCAL_REPO ) );
+        FileUtils.deleteDirectory(new File(getBasedir() + "/" + LOCAL_REPO));
+        FileUtils.deleteDirectory(new File(getBasedir() + "/" + SPECIFIC_LOCAL_REPO));
+    }
+
+    public void testInstallFileFromLocalRepositoryToLocalRepositoryPath() throws Exception {
+        File localRepository =
+                new File(getBasedir(), "target/test-classes/unit/install-file-from-local-repository-test/target");
+
+        File testPom = new File(localRepository.getParentFile(), "plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
+
+        assertNotNull(mojo);
+
+        setVariableValueToObject(mojo, "session", createMavenSession(localRepository.getAbsolutePath()));
+
+        File specificLocalRepositoryPath = new File(getBasedir() + "/" + SPECIFIC_LOCAL_REPO);
+
+        setVariableValueToObject(mojo, "localRepositoryPath", specificLocalRepositoryPath);
+
+        assignValuesForParameter(mojo);
+
+        mojo.execute();
+
+        String localPath = getBasedir() + "/" + SPECIFIC_LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/"
+                + artifactId + "-" + version;
+
+        File installedArtifact = new File(localPath + "." + "jar");
+
+        assertTrue(installedArtifact.exists());
+
+        assertEquals(
+                FileUtils.getFiles(new File(SPECIFIC_LOCAL_REPO), null, null).toString(),
+                5,
+                FileUtils.getFiles(new File(SPECIFIC_LOCAL_REPO), null, null).size());
+    }
+
+    public void testInstallFileWithLocalRepositoryPath() throws Exception {
+        File testPom =
+                new File(getBasedir(), "target/test-classes/unit/install-file-with-checksum/" + "plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
+
+        assertNotNull(mojo);
+
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
+
+        File specificLocalRepositoryPath = new File(getBasedir() + "/" + SPECIFIC_LOCAL_REPO);
+
+        setVariableValueToObject(mojo, "localRepositoryPath", specificLocalRepositoryPath);
+
+        assignValuesForParameter(mojo);
+
+        mojo.execute();
+
+        String localPath = getBasedir() + "/" + SPECIFIC_LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/"
+                + artifactId + "-" + version;
+
+        File installedArtifact = new File(localPath + "." + "jar");
+
+        assertTrue(installedArtifact.exists());
+
+        assertEquals(
+                FileUtils.getFiles(new File(SPECIFIC_LOCAL_REPO), null, null).toString(),
+                5,
+                FileUtils.getFiles(new File(SPECIFIC_LOCAL_REPO), null, null).size());
     }
 
-    public void testInstallFileTestEnvironment()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/install-file-basic-test/plugin-config.xml" );
+    public void testInstallFileTestEnvironment() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/install-file-basic-test/plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
 
-        InstallFileMojo mojo = (InstallFileMojo) lookupMojo( "install-file", testPom );
-        
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
     }
 
-    public void testBasicInstallFile()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/install-file-basic-test/plugin-config.xml" );
+    public void testBasicInstallFile() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/install-file-basic-test/plugin-config.xml");
 
-        InstallFileMojo mojo = (InstallFileMojo) lookupMojo( "install-file", testPom );
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
 
-        assertNotNull( mojo );
-        
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        assertNotNull(mojo);
 
-        assignValuesForParameter( mojo );
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
+
+        assignValuesForParameter(mojo);
 
         mojo.execute();
 
-        File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-            artifactId + "-" + version + "." + packaging );
+        File installedArtifact = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + "."
+                        + packaging);
+
+        assertTrue(installedArtifact.exists());
 
-        assertTrue( installedArtifact.exists() );
-        
-        assertEquals( 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertEquals(5, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testInstallFileWithClassifier()
-        throws Exception
-    {
+    public void testInstallFileWithClassifier() throws Exception {
         File testPom =
-            new File( getBasedir(), "target/test-classes/unit/install-file-with-classifier/plugin-config.xml" );
+                new File(getBasedir(), "target/test-classes/unit/install-file-with-classifier/plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
 
-        InstallFileMojo mojo = (InstallFileMojo) lookupMojo( "install-file", testPom );
+        assertNotNull(mojo);
 
-        assertNotNull( mojo );
-        
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
 
-        assignValuesForParameter( mojo );
+        assignValuesForParameter(mojo);
 
-        assertNotNull( classifier );
+        assertNotNull(classifier);
 
         mojo.execute();
 
-        File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-            artifactId + "-" + version + "-" + classifier + "." + packaging );
+        File installedArtifact = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + "-"
+                        + classifier + "." + packaging);
 
-        assertTrue( installedArtifact.exists() );
-        
-        assertEquals( 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertTrue(installedArtifact.exists());
+
+        assertEquals(5, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testInstallFileWithGeneratePom()
-        throws Exception
-    {
+    public void testInstallFileWithGeneratePom() throws Exception {
         File testPom =
-            new File( getBasedir(), "target/test-classes/unit/install-file-test-generatePom/plugin-config.xml" );
+                new File(getBasedir(), "target/test-classes/unit/install-file-test-generatePom/plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
 
-        InstallFileMojo mojo = (InstallFileMojo) lookupMojo( "install-file", testPom );
+        assertNotNull(mojo);
 
-        assertNotNull( mojo );
-        
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
 
-        assignValuesForParameter( mojo );
+        assignValuesForParameter(mojo);
 
         mojo.execute();
 
-        File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-            artifactId + "-" + version + "." + packaging );
+        File installedArtifact = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + "."
+                        + packaging);
+
+        assertTrue((Boolean) getVariableValueFromObject(mojo, "generatePom"));
 
-        assertTrue( (Boolean) getVariableValueFromObject( mojo, "generatePom" ) );
+        assertTrue(installedArtifact.exists());
 
-        assertTrue( installedArtifact.exists() );
+        File installedPom = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + "."
+                        + "pom");
 
-        File installedPom = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-            artifactId + "-" + version + "." + "pom" );
+        try (Reader reader = new XmlStreamReader(installedPom)) {
+            Model model = new MavenXpp3Reader().read(reader);
 
-        try ( Reader reader = new XmlStreamReader( installedPom ) ) {
-            Model model = new MavenXpp3Reader().read( reader );
+            assertEquals("4.0.0", model.getModelVersion());
 
-            assertEquals( "4.0.0", model.getModelVersion() );
-    
-            assertEquals( (String) getVariableValueFromObject( mojo, "groupId" ), model.getGroupId() );
-    
-            assertEquals( artifactId, model.getArtifactId() );
-    
-            assertEquals( version, model.getVersion() );
+            assertEquals((String) getVariableValueFromObject(mojo, "groupId"), model.getGroupId());
+
+            assertEquals(artifactId, model.getArtifactId());
+
+            assertEquals(version, model.getVersion());
         }
 
-        assertEquals( 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertEquals(5, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testInstallFileWithPomFile()
-        throws Exception
-    {
+    public void testInstallFileWithPomFile() throws Exception {
         File testPom =
-            new File( getBasedir(), "target/test-classes/unit/install-file-with-pomFile-test/plugin-config.xml" );
+                new File(getBasedir(), "target/test-classes/unit/install-file-with-pomFile-test/plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
 
-        InstallFileMojo mojo = (InstallFileMojo) lookupMojo( "install-file", testPom );
+        assertNotNull(mojo);
 
-        assertNotNull( mojo );
-        
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
 
-        assignValuesForParameter( mojo );
+        assignValuesForParameter(mojo);
 
         mojo.execute();
 
-        File pomFile = (File) getVariableValueFromObject( mojo, "pomFile" );
+        File pomFile = (File) getVariableValueFromObject(mojo, "pomFile");
 
-        assertTrue( pomFile.exists() );
+        assertTrue(pomFile.exists());
 
-        File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-            artifactId + "-" + version + "." + packaging );
+        File installedArtifact = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + "."
+                        + packaging);
 
-        assertTrue( installedArtifact.exists() );
+        assertTrue(installedArtifact.exists());
 
-        File installedPom = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-            artifactId + "-" + version + "." + "pom" );
+        File installedPom = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + "."
+                        + "pom");
 
-        assertTrue( installedPom.exists() );
-        
-        assertEquals( 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertTrue(installedPom.exists());
+
+        assertEquals(5, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testInstallFileWithPomAsPackaging()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(),
-                                 "target/test-classes/unit/install-file-with-pom-as-packaging/" + "plugin-config.xml" );
+    public void testInstallFileWithPomAsPackaging() throws Exception {
+        File testPom = new File(
+                getBasedir(), "target/test-classes/unit/install-file-with-pom-as-packaging/" + "plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
 
-        InstallFileMojo mojo = (InstallFileMojo) lookupMojo( "install-file", testPom );
+        assertNotNull(mojo);
 
-        assertNotNull( mojo );
-        
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
 
-        assignValuesForParameter( mojo );
+        assignValuesForParameter(mojo);
 
-        assertTrue( file.exists() );
+        assertTrue(file.exists());
 
-        assertEquals( "pom", packaging );
+        assertEquals("pom", packaging);
 
         mojo.execute();
 
-        File installedPom = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-            artifactId + "-" + version + "." + "pom" );
+        File installedPom = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" + artifactId + "-" + version + "."
+                        + "pom");
 
-        assertTrue( installedPom.exists() );
+        assertTrue(installedPom.exists());
 
-        assertEquals( 4, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertEquals(4, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testInstallFile()
-        throws Exception
-    {
+    public void testInstallFile() throws Exception {
         File testPom =
-            new File( getBasedir(), "target/test-classes/unit/install-file-with-checksum/" + "plugin-config.xml" );
+                new File(getBasedir(), "target/test-classes/unit/install-file-with-checksum/" + "plugin-config.xml");
+
+        InstallFileMojo mojo = (InstallFileMojo) lookupMojo("install-file", testPom);
 
-        InstallFileMojo mojo = (InstallFileMojo) lookupMojo( "install-file", testPom );
+        assertNotNull(mojo);
 
-        assertNotNull( mojo );
-        
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "session", createMavenSession(LOCAL_REPO));
 
-        assignValuesForParameter( mojo );
+        assignValuesForParameter(mojo);
 
         mojo.execute();
 
-        String localPath = getBasedir() + "/" + LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/" +
-                        artifactId + "-" + version;
-        
-        File installedArtifact = new File( localPath + "." + "jar" );
-        
-        assertTrue( installedArtifact.exists() );
-        
-        assertEquals( FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).toString(), 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        String localPath = getBasedir() + "/" + LOCAL_REPO + groupId + "/" + artifactId + "/" + version + "/"
+                + artifactId + "-" + version;
+
+        File installedArtifact = new File(localPath + "." + "jar");
+
+        assertTrue(installedArtifact.exists());
+
+        assertEquals(
+                FileUtils.getFiles(new File(LOCAL_REPO), null, null).toString(),
+                5,
+                FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    private void assignValuesForParameter( Object obj )
-        throws Exception
-    {
-        this.groupId = dotToSlashReplacer( (String) getVariableValueFromObject( obj, "groupId" ) );
+    private void assignValuesForParameter(Object obj) throws Exception {
+        this.groupId = dotToSlashReplacer((String) getVariableValueFromObject(obj, "groupId"));
 
-        this.artifactId = (String) getVariableValueFromObject( obj, "artifactId" );
+        this.artifactId = (String) getVariableValueFromObject(obj, "artifactId");
 
-        this.version = (String) getVariableValueFromObject( obj, "version" );
+        this.version = (String) getVariableValueFromObject(obj, "version");
 
-        this.packaging = (String) getVariableValueFromObject( obj, "packaging" );
+        this.packaging = (String) getVariableValueFromObject(obj, "packaging");
 
-        this.classifier = (String) getVariableValueFromObject( obj, "classifier" );
+        this.classifier = (String) getVariableValueFromObject(obj, "classifier");
 
-        this.file = (File) getVariableValueFromObject( obj, "file" );
+        this.file = (File) getVariableValueFromObject(obj, "file");
     }
 
-    private String dotToSlashReplacer( String parameter )
-    {
-        return parameter.replace( '.', '/' );
+    private String dotToSlashReplacer(String parameter) {
+        return parameter.replace('.', '/');
     }
 
-    private MavenSession createMavenSession() throws NoLocalRepositoryManagerException
-    {
-        MavenSession session = mock( MavenSession.class );
-        DefaultRepositorySystemSession repositorySession  = new DefaultRepositorySystemSession();
-        repositorySession.setLocalRepositoryManager(
-                new EnhancedLocalRepositoryManagerFactory().newInstance(
-                        repositorySession, new LocalRepository( LOCAL_REPO )
-                )
-        );
+    private MavenSession createMavenSession(String localRepositoryBaseDir) throws NoLocalRepositoryManagerException {
+        MavenSession session = mock(MavenSession.class);
+        DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
+        repositorySession.setLocalRepositoryManager(new EnhancedLocalRepositoryManagerFactory()
+                .newInstance(repositorySession, new LocalRepository(localRepositoryBaseDir)));
         ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
-        buildingRequest.setRepositorySession( repositorySession );
-        when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
-        when( session.getRepositorySession() ).thenReturn( repositorySession );
+        buildingRequest.setRepositorySession(repositorySession);
+        when(session.getProjectBuildingRequest()).thenReturn(buildingRequest);
+        when(session.getRepositorySession()).thenReturn(repositorySession);
         return session;
     }
 }


=====================================
src/test/java/org/apache/maven/plugins/install/InstallMojoTest.java
=====================================
@@ -1,5 +1,3 @@
-package org.apache.maven.plugins.install;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.plugins.install;
  * "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
+ *   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
@@ -18,6 +16,7 @@ package org.apache.maven.plugins.install;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.maven.plugins.install;
 
 import java.io.File;
 import java.util.Collections;
@@ -51,85 +50,80 @@ import static org.mockito.Mockito.when;
 /**
  * @author <a href="mailto:aramirez at apache.org">Allan Ramirez</a>
  */
-public class InstallMojoTest
-    extends AbstractMojoTestCase
-{
+public class InstallMojoTest extends AbstractMojoTestCase {
 
     InstallArtifactStub artifact;
 
     private final String LOCAL_REPO = "target/local-repo/";
 
-    public void setUp()
-        throws Exception
-    {
+    public void setUp() throws Exception {
         super.setUp();
 
-        FileUtils.deleteDirectory( new File( getBasedir() + "/" + LOCAL_REPO ) );
+        FileUtils.deleteDirectory(new File(getBasedir() + "/" + LOCAL_REPO));
     }
 
-    public void testInstallTestEnvironment()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml" );
+    public void testInstallTestEnvironment() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml");
 
-        AbstractMojo mojo = (AbstractMojo) lookupMojo( "install", testPom );
+        AbstractMojo mojo = (AbstractMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
     }
 
-    public void testBasicInstall()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml" );
+    public void testBasicInstall() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml");
 
-        AbstractMojo mojo = (AbstractMojo) lookupMojo( "install", testPom );
+        AbstractMojo mojo = (AbstractMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
 
-        File file = new File( getBasedir(), "target/test-classes/unit/basic-install-test/target/"
-            + "maven-install-test-1.0-SNAPSHOT.jar" );
+        File file = new File(
+                getBasedir(),
+                "target/test-classes/unit/basic-install-test/target/" + "maven-install-test-1.0-SNAPSHOT.jar");
 
-        MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
-        updateMavenProject( project );
+        MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
+        updateMavenProject(project);
 
-        setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() );
-        setVariableValueToObject( mojo, "pluginDescriptor", new PluginDescriptor() );
-        setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) );
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "pluginContext", new ConcurrentHashMap<>());
+        setVariableValueToObject(mojo, "pluginDescriptor", new PluginDescriptor());
+        setVariableValueToObject(mojo, "reactorProjects", Collections.singletonList(project));
+        setVariableValueToObject(mojo, "session", createMavenSession());
 
         artifact = (InstallArtifactStub) project.getArtifact();
 
-        artifact.setFile( file );
+        artifact.setFile(file);
 
         mojo.execute();
 
-        String groupId = dotToSlashReplacer( artifact.getGroupId() );
+        String groupId = dotToSlashReplacer(artifact.getGroupId());
+
+        File installedArtifact = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/" + artifact.getVersion() + "/"
+                        + artifact.getArtifactId() + "-" + artifact.getVersion() + "."
+                        + artifact.getArtifactHandler().getExtension());
 
-        File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/" +
-            artifact.getVersion() + "/" + artifact.getArtifactId() + "-" + artifact.getVersion() + "." + artifact.getArtifactHandler().getExtension() );
+        assertTrue(installedArtifact.exists());
 
-        assertTrue( installedArtifact.exists() );
-        
-        assertEquals( 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertEquals(5, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testBasicInstallWithAttachedArtifacts()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/basic-install-test-with-attached-artifacts/"
-            + "plugin-config.xml" );
+    public void testBasicInstallWithAttachedArtifacts() throws Exception {
+        File testPom = new File(
+                getBasedir(),
+                "target/test-classes/unit/basic-install-test-with-attached-artifacts/" + "plugin-config.xml");
 
-        AbstractMojo mojo = (AbstractMojo) lookupMojo( "install", testPom );
+        AbstractMojo mojo = (AbstractMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
 
-        MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
-        updateMavenProject( project );
+        MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
+        updateMavenProject(project);
 
-        setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() );
-        setVariableValueToObject( mojo, "pluginDescriptor", new PluginDescriptor() );
-        setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) );
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "pluginContext", new ConcurrentHashMap<>());
+        setVariableValueToObject(mojo, "pluginDescriptor", new PluginDescriptor());
+        setVariableValueToObject(mojo, "reactorProjects", Collections.singletonList(project));
+        setVariableValueToObject(mojo, "session", createMavenSession());
 
         List<Artifact> attachedArtifacts = project.getAttachedArtifacts();
 
@@ -139,241 +133,233 @@ public class InstallMojoTest
 
         String groupId;
 
-        for ( Object attachedArtifact1 : attachedArtifacts )
-        {
+        for (Object attachedArtifact1 : attachedArtifacts) {
             AttachedArtifactStub0 attachedArtifact = (AttachedArtifactStub0) attachedArtifact1;
 
-            groupId = dotToSlashReplacer( attachedArtifact.getGroupId() );
+            groupId = dotToSlashReplacer(attachedArtifact.getGroupId());
 
-            File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" +
-                attachedArtifact.getArtifactId() + "/" + attachedArtifact.getVersion() + "/" +
-                attachedArtifact.getArtifactId() + "-" + attachedArtifact.getVersion() + "." + packaging );
+            File installedArtifact = new File(
+                    getBasedir(),
+                    LOCAL_REPO + groupId + "/" + attachedArtifact.getArtifactId()
+                            + "/" + attachedArtifact.getVersion() + "/" + attachedArtifact.getArtifactId()
+                            + "-" + attachedArtifact.getVersion() + "." + packaging);
 
-            assertTrue( installedArtifact.getPath() + " does not exist", installedArtifact.exists() );
+            assertTrue(installedArtifact.getPath() + " does not exist", installedArtifact.exists());
         }
-        
-        assertEquals( 13, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+
+        assertEquals(13, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testUpdateReleaseParamSetToTrue()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/configured-install-test/plugin-config.xml" );
+    public void testUpdateReleaseParamSetToTrue() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/configured-install-test/plugin-config.xml");
 
-        AbstractMojo mojo = (AbstractMojo) lookupMojo( "install", testPom );
+        AbstractMojo mojo = (AbstractMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
 
-        File file = new File( getBasedir(), "target/test-classes/unit/configured-install-test/target/"
-            + "maven-install-test-1.0-SNAPSHOT.jar" );
+        File file = new File(
+                getBasedir(),
+                "target/test-classes/unit/configured-install-test/target/" + "maven-install-test-1.0-SNAPSHOT.jar");
 
-        MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
-        updateMavenProject( project );
+        MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
+        updateMavenProject(project);
 
-        setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() );
-        setVariableValueToObject( mojo, "pluginDescriptor", new PluginDescriptor() );
-        setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) );
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "pluginContext", new ConcurrentHashMap<>());
+        setVariableValueToObject(mojo, "pluginDescriptor", new PluginDescriptor());
+        setVariableValueToObject(mojo, "reactorProjects", Collections.singletonList(project));
+        setVariableValueToObject(mojo, "session", createMavenSession());
 
         artifact = (InstallArtifactStub) project.getArtifact();
 
-        artifact.setFile( file );
+        artifact.setFile(file);
 
         mojo.execute();
 
-//        assertTrue( artifact.isRelease() );
-        
-        assertEquals( 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        //        assertTrue( artifact.isRelease() );
+
+        assertEquals(5, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testInstallIfArtifactFileIsNull()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml" );
+    public void testInstallIfArtifactFileIsNull() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml");
 
-        AbstractMojo mojo = (AbstractMojo) lookupMojo( "install", testPom );
+        AbstractMojo mojo = (AbstractMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
 
-        MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
-        updateMavenProject( project );
+        MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
+        updateMavenProject(project);
 
-        setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() );
-        setVariableValueToObject( mojo, "pluginDescriptor", new PluginDescriptor() );
-        setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) );
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "pluginContext", new ConcurrentHashMap<>());
+        setVariableValueToObject(mojo, "pluginDescriptor", new PluginDescriptor());
+        setVariableValueToObject(mojo, "reactorProjects", Collections.singletonList(project));
+        setVariableValueToObject(mojo, "session", createMavenSession());
 
         artifact = (InstallArtifactStub) project.getArtifact();
 
-        artifact.setFile( null );
+        artifact.setFile(null);
 
-        assertNull( artifact.getFile() );
+        assertNull(artifact.getFile());
 
-        try
-        {
+        try {
             mojo.execute();
 
-            fail( "Did not throw mojo execution exception" );
+            fail("Did not throw mojo execution exception");
+        } catch (MojoExecutionException e) {
+            // expected
         }
-        catch ( MojoExecutionException e )
-        {
-            //expected
-        }
-        
-        assertFalse( new File( LOCAL_REPO ).exists() );
+
+        assertFalse(new File(LOCAL_REPO).exists());
     }
 
-    public void testInstallIfPackagingIsPom()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(),
-                                 "target/test-classes/unit/basic-install-test-packaging-pom/" + "plugin-config.xml" );
+    public void testInstallIfPackagingIsPom() throws Exception {
+        File testPom = new File(
+                getBasedir(), "target/test-classes/unit/basic-install-test-packaging-pom/" + "plugin-config.xml");
 
-        AbstractMojo mojo = (AbstractMojo) lookupMojo( "install", testPom );
+        AbstractMojo mojo = (AbstractMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
 
-        MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
-        updateMavenProject( project );
+        MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
+        updateMavenProject(project);
 
-        setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() );
-        setVariableValueToObject( mojo, "pluginDescriptor", new PluginDescriptor() );
-        setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) );
-        setVariableValueToObject( mojo, "session", createMavenSession() );
+        setVariableValueToObject(mojo, "pluginContext", new ConcurrentHashMap<>());
+        setVariableValueToObject(mojo, "pluginDescriptor", new PluginDescriptor());
+        setVariableValueToObject(mojo, "reactorProjects", Collections.singletonList(project));
+        setVariableValueToObject(mojo, "session", createMavenSession());
 
         String packaging = project.getPackaging();
 
-        assertEquals( "pom", packaging );
+        assertEquals("pom", packaging);
 
         artifact = (InstallArtifactStub) project.getArtifact();
 
         mojo.execute();
 
-        String groupId = dotToSlashReplacer( artifact.getGroupId() );
+        String groupId = dotToSlashReplacer(artifact.getGroupId());
 
-        File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/" +
-            artifact.getVersion() + "/" + artifact.getArtifactId() + "-" + artifact.getVersion() + "." + "pom" );
+        File installedArtifact = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/" + artifact.getVersion() + "/"
+                        + artifact.getArtifactId() + "-" + artifact.getVersion() + "." + "pom");
 
-        assertTrue( installedArtifact.exists() );
-        
-        assertEquals( 4, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertTrue(installedArtifact.exists());
+
+        assertEquals(4, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testBasicInstallAndCreate()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/basic-install-checksum/plugin-config.xml" );
+    public void testBasicInstallAndCreate() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/basic-install-checksum/plugin-config.xml");
 
-        AbstractMojo mojo = (AbstractMojo) lookupMojo( "install", testPom );
+        AbstractMojo mojo = (AbstractMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
 
-        File file = new File( getBasedir(), "target/test-classes/unit/basic-install-checksum/" + "maven-test-jar.jar" );
+        File file = new File(getBasedir(), "target/test-classes/unit/basic-install-checksum/" + "maven-test-jar.jar");
 
-        MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
+        MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
         MavenSession mavenSession = createMavenSession();
-        updateMavenProject( project );
+        updateMavenProject(project);
 
-        setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() );
-        setVariableValueToObject( mojo, "pluginDescriptor", new PluginDescriptor() );
-        setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) );
-        setVariableValueToObject( mojo, "session", mavenSession );
+        setVariableValueToObject(mojo, "pluginContext", new ConcurrentHashMap<>());
+        setVariableValueToObject(mojo, "pluginDescriptor", new PluginDescriptor());
+        setVariableValueToObject(mojo, "reactorProjects", Collections.singletonList(project));
+        setVariableValueToObject(mojo, "session", mavenSession);
 
         artifact = (InstallArtifactStub) project.getArtifact();
 
-        artifact.setFile( file );
+        artifact.setFile(file);
 
         mojo.execute();
 
-        File pom = new File( new File( LOCAL_REPO ), mavenSession.getRepositorySession().getLocalRepositoryManager().getPathForLocalArtifact( new DefaultArtifact( artifact.getGroupId(), artifact.getArtifactId(), "pom", artifact.getVersion() ) ) );
+        File pom = new File(
+                new File(LOCAL_REPO),
+                mavenSession
+                        .getRepositorySession()
+                        .getLocalRepositoryManager()
+                        .getPathForLocalArtifact(new DefaultArtifact(
+                                artifact.getGroupId(), artifact.getArtifactId(), "pom", artifact.getVersion())));
 
-        assertTrue( pom.exists() );
+        assertTrue(pom.exists());
 
-        String groupId = dotToSlashReplacer( artifact.getGroupId() );
+        String groupId = dotToSlashReplacer(artifact.getGroupId());
         String packaging = project.getPackaging();
-        String localPath = getBasedir() + "/" + LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/" +
-                        artifact.getVersion() + "/" + artifact.getArtifactId() + "-" + artifact.getVersion();
-        
+        String localPath = getBasedir() + "/" + LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/"
+                + artifact.getVersion() + "/" + artifact.getArtifactId() + "-" + artifact.getVersion();
+
+        File installedArtifact = new File(localPath + "." + packaging);
 
-        File installedArtifact = new File( localPath + "." + packaging );
+        assertTrue(installedArtifact.exists());
 
-        assertTrue( installedArtifact.exists() );
-        
-        assertEquals( 5, FileUtils.getFiles( new File( LOCAL_REPO ), null, null ).size() );
+        assertEquals(5, FileUtils.getFiles(new File(LOCAL_REPO), null, null).size());
     }
 
-    public void testSkip()
-        throws Exception
-    {
-        File testPom = new File( getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml" );
+    public void testSkip() throws Exception {
+        File testPom = new File(getBasedir(), "target/test-classes/unit/basic-install-test/plugin-config.xml");
 
-        InstallMojo mojo = (InstallMojo) lookupMojo( "install", testPom );
+        InstallMojo mojo = (InstallMojo) lookupMojo("install", testPom);
 
-        assertNotNull( mojo );
+        assertNotNull(mojo);
 
-        File file = new File( getBasedir(), "target/test-classes/unit/basic-install-test/target/"
-            + "maven-install-test-1.0-SNAPSHOT.jar" );
+        File file = new File(
+                getBasedir(),
+                "target/test-classes/unit/basic-install-test/target/" + "maven-install-test-1.0-SNAPSHOT.jar");
 
-        MavenProject project = (MavenProject) getVariableValueFromObject( mojo, "project" );
-        updateMavenProject( project );
+        MavenProject project = (MavenProject) getVariableValueFromObject(mojo, "project");
+        updateMavenProject(project);
 
-        setVariableValueToObject( mojo, "pluginContext", new ConcurrentHashMap<>() );
-        setVariableValueToObject( mojo, "pluginDescriptor", new PluginDescriptor() );
-        setVariableValueToObject( mojo, "reactorProjects", Collections.singletonList( project ) );
-        setVariableValueToObject( mojo, "session", createMavenSession() );
-        setVariableValueToObject( mojo, "skip", Boolean.TRUE );
+        setVariableValueToObject(mojo, "pluginContext", new ConcurrentHashMap<>());
+        setVariableValueToObject(mojo, "pluginDescriptor", new PluginDescriptor());
+        setVariableValueToObject(mojo, "reactorProjects", Collections.singletonList(project));
+        setVariableValueToObject(mojo, "session", createMavenSession());
+        setVariableValueToObject(mojo, "skip", Boolean.TRUE);
 
         artifact = (InstallArtifactStub) project.getArtifact();
 
-        artifact.setFile( file );
+        artifact.setFile(file);
 
         mojo.execute();
 
-        String groupId = dotToSlashReplacer( artifact.getGroupId() );
+        String groupId = dotToSlashReplacer(artifact.getGroupId());
 
         String packaging = project.getPackaging();
 
-        File installedArtifact = new File( getBasedir(), LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/" +
-            artifact.getVersion() + "/" + artifact.getArtifactId() + "-" + artifact.getVersion() + "." + packaging );
+        File installedArtifact = new File(
+                getBasedir(),
+                LOCAL_REPO + groupId + "/" + artifact.getArtifactId() + "/" + artifact.getVersion() + "/"
+                        + artifact.getArtifactId() + "-" + artifact.getVersion() + "." + packaging);
 
-        assertFalse( installedArtifact.exists() );
-        
-        assertFalse( new File( LOCAL_REPO ).exists() );
-    }
+        assertFalse(installedArtifact.exists());
 
+        assertFalse(new File(LOCAL_REPO).exists());
+    }
 
-    private String dotToSlashReplacer( String parameter )
-    {
-        return parameter.replace( '.', '/' );
+    private String dotToSlashReplacer(String parameter) {
+        return parameter.replace('.', '/');
     }
-    
-    private MavenSession createMavenSession() throws NoLocalRepositoryManagerException
-    {
-        MavenSession session = mock( MavenSession.class );
-        DefaultRepositorySystemSession repositorySession  = new DefaultRepositorySystemSession();
-        repositorySession.setLocalRepositoryManager(
-                new EnhancedLocalRepositoryManagerFactory().newInstance(
-                        repositorySession, new LocalRepository( LOCAL_REPO )
-                )
-        );
+
+    private MavenSession createMavenSession() throws NoLocalRepositoryManagerException {
+        MavenSession session = mock(MavenSession.class);
+        DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession();
+        repositorySession.setLocalRepositoryManager(new EnhancedLocalRepositoryManagerFactory()
+                .newInstance(repositorySession, new LocalRepository(LOCAL_REPO)));
         ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest();
-        buildingRequest.setRepositorySession( repositorySession );
-        when( session.getProjectBuildingRequest() ).thenReturn( buildingRequest );
-        when( session.getRepositorySession() ).thenReturn( repositorySession );
-        when( session.getPluginContext(any(PluginDescriptor.class), any(MavenProject.class)))
-            .thenReturn( new ConcurrentHashMap<String, Object>() );
+        buildingRequest.setRepositorySession(repositorySession);
+        when(session.getProjectBuildingRequest()).thenReturn(buildingRequest);
+        when(session.getRepositorySession()).thenReturn(repositorySession);
+        when(session.getPluginContext(any(PluginDescriptor.class), any(MavenProject.class)))
+                .thenReturn(new ConcurrentHashMap<String, Object>());
         return session;
     }
-    
-    private void updateMavenProject( MavenProject project )
-    {
-       project.setGroupId( project.getArtifact().getGroupId() );
-       project.setArtifactId( project.getArtifact().getArtifactId() );
-       project.setVersion( project.getArtifact().getVersion() );
-
-       Plugin plugin = new Plugin();
-       plugin.setArtifactId( "maven-install-plugin" );
-       project.setBuild( new Build() );
-       project.getBuild().addPlugin( plugin );
+
+    private void updateMavenProject(MavenProject project) {
+        project.setGroupId(project.getArtifact().getGroupId());
+        project.setArtifactId(project.getArtifact().getArtifactId());
+        project.setVersion(project.getArtifact().getVersion());
+
+        Plugin plugin = new Plugin();
+        plugin.setArtifactId("maven-install-plugin");
+        project.setBuild(new Build());
+        project.getBuild().addPlugin(plugin);
     }
 }


=====================================
src/test/java/org/apache/maven/plugins/install/stubs/AttachedArtifactStub0.java
=====================================
@@ -1,7 +1,3 @@
-package org.apache.maven.plugins.install.stubs;
-
-import java.io.File;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -11,7 +7,7 @@ import java.io.File;
  * "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
+ *   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
@@ -20,19 +16,19 @@ import java.io.File;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.maven.plugins.install.stubs;
+
+import java.io.File;
 
-public class AttachedArtifactStub0
-    extends InstallArtifactStub
-{
-    public String getArtifactId()
-    {
+public class AttachedArtifactStub0 extends InstallArtifactStub {
+    public String getArtifactId() {
         return "attached-artifact-test-0";
     }
 
-    public File getFile()
-    {
-        return new File( System.getProperty( "basedir" ),
-                         "target/test-classes/unit/basic-install-test-with-attached-artifacts/"
-                             + "target/maven-install-test-1.0-SNAPSHOT.jar" );
+    public File getFile() {
+        return new File(
+                System.getProperty("basedir"),
+                "target/test-classes/unit/basic-install-test-with-attached-artifacts/"
+                        + "target/maven-install-test-1.0-SNAPSHOT.jar");
     }
 }


=====================================
src/test/java/org/apache/maven/plugins/install/stubs/AttachedArtifactStub1.java
=====================================
@@ -1,5 +1,3 @@
-package org.apache.maven.plugins.install.stubs;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.plugins.install.stubs;
  * "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
+ *   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
@@ -18,12 +16,10 @@ package org.apache.maven.plugins.install.stubs;
  * specific language governing permissions and limitations
  * under the License.
  */
+package org.apache.maven.plugins.install.stubs;
 
-public class AttachedArtifactStub1
-    extends AttachedArtifactStub0
-{
-    public String getArtifactId()
-    {
+public class AttachedArtifactStub1 extends AttachedArtifactStub0 {
+    public String getArtifactId() {
         return "attached-artifact-test-1";
     }
 }


=====================================
src/test/java/org/apache/maven/plugins/install/stubs/InstallArtifactStub.java
=====================================
@@ -1,5 +1,3 @@
-package org.apache.maven.plugins.install.stubs;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -9,7 +7,7 @@ package org.apache.maven.plugins.install.stubs;
  * "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
+ *   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
@@ -18,11 +16,7 @@ package org.apache.maven.plugins.install.stubs;
  * specific language governing permissions and limitations
  * under the License.
  */
-
-import org.apache.maven.artifact.handler.ArtifactHandler;
-import org.apache.maven.artifact.handler.DefaultArtifactHandler;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.plugin.testing.stubs.ArtifactStub;
+package org.apache.maven.plugins.install.stubs;
 
 import java.io.File;
 import java.util.Collection;
@@ -30,92 +24,76 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.maven.artifact.handler.ArtifactHandler;
+import org.apache.maven.artifact.handler.DefaultArtifactHandler;
+import org.apache.maven.artifact.metadata.ArtifactMetadata;
+import org.apache.maven.plugin.testing.stubs.ArtifactStub;
 
-public class InstallArtifactStub
-    extends ArtifactStub
-{
+public class InstallArtifactStub extends ArtifactStub {
     private Map<Object, ArtifactMetadata> metadataMap;
 
     private File file;
 
     private boolean release;
 
-    public String getArtifactId()
-    {
+    public String getArtifactId() {
         return "maven-install-test";
     }
 
-    public String getGroupId()
-    {
+    public String getGroupId() {
         return "org.apache.maven.test";
     }
 
-    public String getVersion()
-    {
+    public String getVersion() {
         return "1.0-SNAPSHOT";
     }
 
-    public String getBaseVersion()
-    {
+    public String getBaseVersion() {
         return getVersion();
     }
 
-    public void setFile( File file )
-    {
+    public void setFile(File file) {
         this.file = file;
     }
 
-    public File getFile()
-    {
+    public File getFile() {
         return file;
     }
 
-    public String getType()
-    {
+    public String getType() {
         return "jar";
     }
-    
-    public ArtifactHandler getArtifactHandler()
-    {
-        return new DefaultArtifactHandler()
-        {
-            public String getExtension()
-            {
+
+    public ArtifactHandler getArtifactHandler() {
+        return new DefaultArtifactHandler() {
+            public String getExtension() {
                 return "jar";
             }
         };
     }
 
-    public void addMetadata( ArtifactMetadata metadata )
-    {
-        if ( metadataMap == null )
-        {
+    public void addMetadata(ArtifactMetadata metadata) {
+        if (metadataMap == null) {
             metadataMap = new HashMap<Object, ArtifactMetadata>();
         }
 
-        ArtifactMetadata m = metadataMap.get( metadata.getKey() );
-        if ( m != null )
-        {
-            m.merge( metadata );
-        }
-        else
-        {
-            metadataMap.put( metadata.getKey(), metadata );
+        ArtifactMetadata m = metadataMap.get(metadata.getKey());
+        if (m != null) {
+            m.merge(metadata);
+        } else {
+            metadataMap.put(metadata.getKey(), metadata);
         }
     }
 
-    public Collection getMetadataList()
-    {
+    public Collection getMetadataList() {
         return metadataMap == null ? Collections.EMPTY_LIST : metadataMap.values();
     }
 
-    public boolean isRelease()
-    {
+    public boolean isRelease() {
         return release;
     }
 
-    public void setRelease( boolean release )
-    {
+    public void setRelease(boolean release) {
         this.release = release;
     }
 }


=====================================
src/test/resources/unit/install-file-from-local-repository-test/plugin-config.xml
=====================================
@@ -0,0 +1,35 @@
+<!--
+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.
+-->
+<project>
+  <build>
+    <plugins>
+      <plugin>
+        <artifactId>maven-install-plugin</artifactId>
+        <configuration>
+          <groupId>org.apache.maven.test</groupId>
+          <artifactId>maven-install-test</artifactId>
+          <version>1.0-SNAPSHOT</version>
+          <packaging>jar</packaging>
+          <file>${basedir}/target/test-classes/unit/install-file-from-local-repository-test/target/org/apache/maven/test/maven-install-test/1.0-SNAPSHOT/maven-install-test-1.0-SNAPSHOT.jar
+          </file>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+</project>


=====================================
src/test/resources/unit/install-file-from-local-repository-test/target/org/apache/maven/test/maven-install-test/1.0-SNAPSHOT/maven-install-test-1.0-SNAPSHOT.jar
=====================================
Binary files /dev/null and b/src/test/resources/unit/install-file-from-local-repository-test/target/org/apache/maven/test/maven-install-test/1.0-SNAPSHOT/maven-install-test-1.0-SNAPSHOT.jar differ



View it on GitLab: https://salsa.debian.org/java-team/maven-install-plugin/-/commit/446e2679f87bd97ace39d51eee888eacba0f73be

-- 
View it on GitLab: https://salsa.debian.org/java-team/maven-install-plugin/-/commit/446e2679f87bd97ace39d51eee888eacba0f73be
You're receiving this email because of your account on salsa.debian.org.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20230617/c9dd02bc/attachment.htm>


More information about the pkg-java-commits mailing list