Skip to content

Commit d5b7864

Browse files
committed
Improve maven-plugin-plugin task inputs
1 parent 482d591 commit d5b7864

File tree

2 files changed

+32
-26
lines changed

2 files changed

+32
-26
lines changed

maven-plugin-plugin/src/main/java/io/freefair/gradle/plugins/maven/plugin/DescriptorGeneratorTask.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
import org.apache.maven.plugin.descriptor.InvalidPluginDescriptorException;
99
import org.apache.maven.plugin.descriptor.PluginDescriptor;
1010
import org.apache.maven.plugin.plugin.DescriptorGeneratorMojo;
11-
import org.apache.maven.project.MavenProject;
1211
import org.apache.maven.tools.plugin.DefaultPluginToolsRequest;
1312
import org.apache.maven.tools.plugin.extractor.ExtractionException;
1413
import org.apache.maven.tools.plugin.extractor.MojoDescriptorExtractor;
@@ -22,6 +21,10 @@
2221
import org.apache.maven.tools.plugin.scanner.MojoScanner;
2322
import org.codehaus.plexus.component.repository.ComponentDependency;
2423
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
24+
import org.gradle.api.artifacts.Configuration;
25+
import org.gradle.api.artifacts.component.ComponentIdentifier;
26+
import org.gradle.api.artifacts.component.ModuleComponentIdentifier;
27+
import org.gradle.api.artifacts.result.ResolvedArtifactResult;
2528
import org.gradle.api.file.ConfigurableFileCollection;
2629
import org.gradle.api.file.DirectoryProperty;
2730
import org.gradle.api.file.ProjectLayout;
@@ -30,15 +33,13 @@
3033
import org.gradle.api.plugins.JavaPluginExtension;
3134
import org.gradle.api.provider.Property;
3235
import org.gradle.api.tasks.*;
36+
import org.gradle.api.tasks.Optional;
3337

3438
import javax.annotation.Nonnull;
3539
import javax.inject.Inject;
3640
import java.io.IOException;
3741
import java.lang.reflect.Field;
38-
import java.util.HashMap;
39-
import java.util.List;
40-
import java.util.Map;
41-
import java.util.TreeMap;
42+
import java.util.*;
4243
import java.util.stream.Collectors;
4344

4445
/**
@@ -78,8 +79,18 @@ public abstract class DescriptorGeneratorTask extends AbstractGeneratorTask {
7879
@Input
7980
public abstract Property<Boolean> getSkipErrorNoDescriptorsFound();
8081

82+
@InputFiles
83+
public abstract ConfigurableFileCollection getMainSourceDirs();
84+
85+
@Internal
86+
public abstract DirectoryProperty getMainOutputDirectory();
87+
8188
public DescriptorGeneratorTask() {
8289
getSkipErrorNoDescriptorsFound().convention(false);
90+
91+
SourceSet main = getProject().getExtensions().getByType(JavaPluginExtension.class).getSourceSets().getByName(SourceSet.MAIN_SOURCE_SET_NAME);
92+
getMainSourceDirs().from(main.getAllJava().getSourceDirectories());
93+
getMainOutputDirectory().convention(main.getJava().getClassesDirectory());
8394
}
8495

8596
/**
@@ -89,8 +100,9 @@ public DescriptorGeneratorTask() {
89100
protected void generate() throws ExtractionException, InvalidPluginDescriptorException, XmlPullParserException, IOException, GeneratorException {
90101
PluginDescriptor pluginDescriptor = new PluginDescriptor();
91102

92-
SourceSetContainer sourceSets = getProject().getExtensions().getByType(JavaPluginExtension.class).getSourceSets();
93-
MavenProject project = new MavenProjectWrapper(getProjectLayout(), sourceSets, getPomFile().getAsFile().get());
103+
MavenProjectWrapper project = new MavenProjectWrapper(getProjectLayout(), getPomFile().getAsFile().get());
104+
project.setMainSourceDirs(getMainSourceDirs());
105+
project.setMainOutputDirectory(getMainOutputDirectory());
94106

95107
pluginDescriptor.setGroupId(project.getGroupId());
96108
pluginDescriptor.setArtifactId(project.getArtifactId());

maven-plugin-plugin/src/main/java/io/freefair/gradle/plugins/maven/plugin/wrappers/MavenProjectWrapper.java

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import org.apache.maven.project.artifact.ProjectArtifact;
77
import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
88
import org.gradle.api.Project;
9+
import org.gradle.api.file.DirectoryProperty;
10+
import org.gradle.api.file.FileCollection;
911
import org.gradle.api.file.ProjectLayout;
10-
import org.gradle.api.tasks.SourceSet;
11-
import org.gradle.api.tasks.SourceSetContainer;
1212

1313
import java.io.File;
1414
import java.io.FileReader;
@@ -26,10 +26,9 @@ public class MavenProjectWrapper extends MavenProject {
2626
private final ProjectLayout projectLayout;
2727
private final File pomFile;
2828

29-
private final SourceSet main;
30-
private final SourceSet test;
29+
private FileCollection mainSourceDirs;
3130

32-
public MavenProjectWrapper(ProjectLayout projectLayout, SourceSetContainer sourceSets, File pomFile) throws IOException, XmlPullParserException {
31+
public MavenProjectWrapper(ProjectLayout projectLayout, File pomFile) throws IOException, XmlPullParserException {
3332
this.projectLayout = projectLayout;
3433
this.pomFile = pomFile;
3534

@@ -40,14 +39,6 @@ public MavenProjectWrapper(ProjectLayout projectLayout, SourceSetContainer sourc
4039

4140
getBuild().setDirectory(projectLayout.getBuildDirectory().get().getAsFile().getAbsolutePath());
4241

43-
main = sourceSets.getByName(SourceSet.MAIN_SOURCE_SET_NAME);
44-
getBuild().setSourceDirectory(main.getJava().getSrcDirs().iterator().next().getAbsolutePath());
45-
getBuild().setOutputDirectory(main.getJava().getClassesDirectory().get().getAsFile().getAbsolutePath());
46-
47-
test = sourceSets.getByName(SourceSet.TEST_SOURCE_SET_NAME);
48-
getBuild().setTestSourceDirectory(test.getJava().getSrcDirs().iterator().next().getAbsolutePath());
49-
getBuild().setTestOutputDirectory(test.getJava().getClassesDirectory().get().getAsFile().getAbsolutePath());
50-
5142
setArtifact(new ProjectArtifact(this));
5243
}
5344

@@ -63,15 +54,18 @@ public File getBasedir() {
6354

6455
@Override
6556
public List<String> getCompileSourceRoots() {
66-
return main.getJava().getSrcDirs().stream()
57+
return mainSourceDirs.getFiles().stream()
6758
.map(File::getAbsolutePath)
6859
.collect(Collectors.toList());
6960
}
7061

71-
@Override
72-
public List<String> getTestCompileSourceRoots() {
73-
return test.getJava().getSrcDirs().stream()
74-
.map(File::getAbsolutePath)
75-
.collect(Collectors.toList());
62+
public void setMainSourceDirs(FileCollection mainSourceDirs) {
63+
this.mainSourceDirs = mainSourceDirs;
64+
getBuild().setSourceDirectory(mainSourceDirs.getFiles().iterator().next().getAbsolutePath());
65+
}
66+
67+
public void setMainOutputDirectory(DirectoryProperty mainOutputDirectory) {
68+
getBuild().setOutputDirectory(mainOutputDirectory.get().getAsFile().getAbsolutePath());
7669
}
70+
7771
}

0 commit comments

Comments
 (0)