From 4e4fee1091cce654dccc65167868dfd79a2d6a45 Mon Sep 17 00:00:00 2001 From: Sebastian Ratz Date: Mon, 3 Jul 2023 10:50:37 +0100 Subject: [PATCH] [MDEPLOY-311] Pass on 'packaging' when creating artifact to upload Fixes a regression introduced in 16541da43c51237cf7183c4500a576108ad946b8 [MDEPLOY-296] which caused the -Dpackaging property to be ignored when uploading the artifact. Instead, the packaging type during upload was always derived from the file name. --- .../maven/plugins/deploy/DeployFileMojo.java | 6 +-- .../plugins/deploy/DeployFileMojoTest.java | 39 +++++++++++++++++++ .../deploy-file-packaging/plugin-config.xml | 38 ++++++++++++++++++ 3 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 src/test/resources/unit/deploy-file-packaging/plugin-config.xml 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 + + + + +