diff --git a/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java b/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java index aeaf5f77..7ea2101b 100644 --- a/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java +++ b/src/main/java/org/apache/maven/plugins/deploy/DeployFileMojo.java @@ -265,6 +265,7 @@ public void execute() throws MojoExecutionException, MojoFailureException { deployRequest.setRepository(remoteRepository); boolean isFilePom = classifier == null && "pom".equals(packaging); + String extension = packaging; if (!isFilePom) { ArtifactType artifactType = session.getRepositorySession().getArtifactTypeRegistry().get(packaging); @@ -272,11 +273,10 @@ public void execute() throws MojoExecutionException, MojoFailureException { && (classifier == null || classifier.isEmpty()) && !StringUtils.isEmpty(artifactType.getClassifier())) { classifier = artifactType.getClassifier(); + extension = artifactType.getExtension(); } } - Artifact mainArtifact = new DefaultArtifact( - groupId, artifactId, classifier, isFilePom ? "pom" : getExtension(file), version) - .setFile(file); + Artifact mainArtifact = new DefaultArtifact(groupId, artifactId, classifier, extension, version).setFile(file); deployRequest.addArtifact(mainArtifact); File artifactLocalFile = getLocalRepositoryFile(session.getRepositorySession(), mainArtifact); diff --git a/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java b/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java index f36e6892..5a8f4b6e 100644 --- a/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java +++ b/src/test/java/org/apache/maven/plugins/deploy/DeployFileMojoTest.java @@ -276,6 +276,45 @@ public void testDeployIfArtifactIsNotJar() throws Exception { assertTrue(file.exists()); } + public void testDeployFileIfPackagingIsSet() throws Exception { + File testPom = new File(getBasedir(), "target/test-classes/unit/deploy-file-packaging/plugin-config.xml"); + + mojo = (DeployFileMojo) lookupMojo("deploy-file", testPom); + + MockitoAnnotations.initMocks(this); + + assertNotNull(mojo); + + ProjectBuildingRequest buildingRequest = mock(ProjectBuildingRequest.class); + when(buildingRequest.getRepositoryMerging()).thenReturn(ProjectBuildingRequest.RepositoryMerging.POM_DOMINANT); + when(session.getProjectBuildingRequest()).thenReturn(buildingRequest); + DefaultRepositorySystemSession repositorySession = new DefaultRepositorySystemSession(); + repositorySession.setLocalRepositoryManager(new SimpleLocalRepositoryManagerFactory() + .newInstance(repositorySession, new LocalRepository(LOCAL_REPO))); + when(buildingRequest.getRepositorySession()).thenReturn(repositorySession); + when(session.getRepositorySession()).thenReturn(repositorySession); + + String packaging = (String) getVariableValueFromObject(mojo, "packaging"); + + String groupId = (String) getVariableValueFromObject(mojo, "groupId"); + + String artifactId = (String) getVariableValueFromObject(mojo, "artifactId"); + + String version = (String) getVariableValueFromObject(mojo, "version"); + + assertEquals("differentpackaging", packaging); + + mojo.execute(); + + File deployedArtifact = new File( + remoteRepo, + "deploy-file-packaging/" + groupId.replace('.', '/') + "/" + + artifactId + "/" + version + "/" + artifactId + "-" + + version + ".differentpackaging"); + + assertTrue(deployedArtifact.exists()); + } + private void addFileToList(File file, List fileList) { if (!file.isDirectory()) { fileList.add(file.getName()); diff --git a/src/test/resources/unit/deploy-file-packaging/plugin-config.xml b/src/test/resources/unit/deploy-file-packaging/plugin-config.xml new file mode 100644 index 00000000..53cd092d --- /dev/null +++ b/src/test/resources/unit/deploy-file-packaging/plugin-config.xml @@ -0,0 +1,38 @@ + + + + + + + maven-deploy-plugin + + org.apache.maven.test + maven-deploy-file-test + 1.0 + differentpackaging + ${basedir}/src/test/resources/unit/deploy-file-packaging/target/deploy-test-file-1.0-SNAPSHOT.jar + deploy-test + file://${basedir}/target/remote-repo/deploy-file-packaging + true + + + + +