Created
June 19, 2020 10:57
-
-
Save sanyarnd/34760a495a6c4b635a99d899ced6621b to your computer and use it in GitHub Desktop.
Maven Sources + Delombok
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import java.util.List; | |
| import java.util.stream.Collectors; | |
| import org.apache.maven.plugins.annotations.LifecyclePhase; | |
| import org.apache.maven.plugins.annotations.Mojo; | |
| import org.apache.maven.plugins.annotations.Parameter; | |
| import org.apache.maven.plugins.source.SourceJarNoForkMojo; | |
| import org.apache.maven.project.MavenProject; | |
| /** | |
| * This goal bundles all the sources into a jar archive, but uses delomboked sources. | |
| */ | |
| @Mojo(name = "jar-no-fork", defaultPhase = LifecyclePhase.VERIFY, threadSafe = true) | |
| public class EnhancedSourceJarNoForkMojo extends SourceJarNoForkMojo { | |
| @Parameter(property = "<some-prefix>.useDelombokSources", defaultValue = "true") | |
| protected boolean useDelombokSources; | |
| @Parameter(property = "<some-prefix>.delombokSourcesLocation", defaultValue = "delombok") | |
| protected String delombokSourcesLocation; | |
| @Override | |
| protected List<String> getSources(MavenProject p) { | |
| // if user doesn't want delomboked sources, use default algorithm | |
| List<String> sources = super.getSources(p); | |
| if (!useDelombokSources) { | |
| return sources; | |
| } | |
| // typically, sources' list will contain: [src/main/java, target/generated_sources]. | |
| // replace src/main/java if it's present with delombok-generated sources | |
| String target = p.getBuild().getDirectory(); | |
| return super.getSources(p) | |
| .stream() | |
| .map(s -> s.endsWith("java") ? String.format("%s/%s", target, delombokSourcesLocation) : s) | |
| .collect(Collectors.toList()); | |
| } | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <profile> | |
| <id>use-delomboked-sources</id> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.projectlombok</groupId> | |
| <artifactId>lombok-maven-plugin</artifactId> | |
| <version>1.18.12.0</version> | |
| <dependencies> | |
| <dependency> | |
| <groupId>org.projectlombok</groupId> | |
| <artifactId>lombok</artifactId> | |
| <version>${lombok.version}</version> | |
| </dependency> | |
| </dependencies> | |
| <configuration> | |
| <sourceDirectory>${project.basedir}/src/main/java</sourceDirectory> | |
| <outputDirectory>${project.build.directory}/delombok</outputDirectory> | |
| <addOutputDirectory>false</addOutputDirectory> | |
| <encoding>UTF-8</encoding> | |
| </configuration> | |
| <executions> | |
| <execution> | |
| <id>delombok</id> | |
| <phase>prepare-package</phase> | |
| <goals> | |
| <goal>delombok</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| <plugin> | |
| <groupId>YOUR_PLUGIN_GROUP_ID</groupId> | |
| <artifactId>delombok-sources-plugin</artifactId> | |
| <version>YOUR_PLUGIN_VERSION</version> | |
| <executions> | |
| <execution> | |
| <id>attach-sources</id> | |
| <phase>package</phase> | |
| <goals> | |
| <goal>jar-no-fork</goal> | |
| </goals> | |
| </execution> | |
| </executions> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </profile> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| xmlns="http://maven.apache.org/POM/4.0.0" | |
| 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> | |
| <artifactId>delombok-sources-plugin</artifactId> | |
| <packaging>maven-plugin</packaging> | |
| <name>Delombok Sources Plugin</name> | |
| <description>Use delomboked sources instead of originals for sources-jar packaging</description> | |
| <dependencies> | |
| <dependency> | |
| <groupId>org.apache.maven</groupId> | |
| <artifactId>maven-plugin-api</artifactId> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.maven.plugin-tools</groupId> | |
| <artifactId>maven-plugin-annotations</artifactId> | |
| <scope>provided</scope> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-source-plugin</artifactId> | |
| <type>maven-plugin</type> | |
| </dependency> | |
| </dependencies> | |
| <build> | |
| <plugins> | |
| <plugin> | |
| <groupId>org.apache.maven.plugins</groupId> | |
| <artifactId>maven-plugin-plugin</artifactId> | |
| </plugin> | |
| </plugins> | |
| </build> | |
| </project> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment