You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by gn...@apache.org on 2020/02/05 06:19:20 UTC
[camel] branch master updated: Fix and speed up the build
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push:
new 07861f8 Fix and speed up the build
07861f8 is described below
commit 07861f8b867fb0daf96dd26c43c726a962ef3ce6
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Feb 5 07:13:16 2020 +0100
Fix and speed up the build
---
components/pom.xml | 24 +--
core/camel-core/pom.xml | 12 ++
core/pom.xml | 33 +---
.../maven/packaging/AbstractGeneratorMojo.java | 11 ++
.../camel/maven/packaging/ComponentDslMojo.java | 14 +-
.../camel/maven/packaging/EndpointDslMojo.java | 17 +-
.../packaging/EndpointSchemaGeneratorMojo.java | 9 +
.../apache/camel/maven/packaging/GenerateMojo.java | 219 +++++++++++++++++++++
.../camel/maven/packaging/PackageJandexMojo.java | 14 +-
.../camel/maven/packaging/PackageJaxbMojo.java | 6 +
.../camel/maven/packaging/PackageLegalMojo.java | 5 +-
.../camel/maven/packaging/PackageModelMojo.java | 6 +
.../maven/packaging/PrepareComponentMojo.java | 35 ++--
.../camel/maven/packaging/SchemaGeneratorMojo.java | 12 ++
.../camel/maven/packaging/SpiGeneratorMojo.java | 9 +
.../TypeConverterLoaderGeneratorMojo.java | 11 ++
.../camel/maven/packaging/UpdateReadmeMojo.java | 27 ++-
.../maven/packaging/ValidateComponentMojo.java | 29 +--
18 files changed, 380 insertions(+), 113 deletions(-)
diff --git a/components/pom.xml b/components/pom.xml
index cba4adb..154ca5d 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -389,32 +389,10 @@
<execution>
<id>generate</id>
<goals>
- <goal>jandex</goal>
- <goal>generate-type-converter-loader</goal>
- <goal>generate-spi</goal>
- <goal>generate-endpoint-schema</goal>
- <goal>prepare-components</goal>
- <goal>generate-components-list</goal>
+ <goal>generate</goal>
</goals>
<phase>process-classes</phase>
</execution>
- <execution>
- <id>validate</id>
- <goals>
- <goal>validate-components</goal>
- <goal>generate-legal</goal>
- <goal>generate-endpoint-dsl</goal>
- <goal>generate-component-dsl</goal>
- </goals>
- <phase>prepare-package</phase>
- </execution>
- <execution>
- <id>readme</id>
- <goals>
- <goal>update-readme</goal>
- </goals>
- <phase>package</phase>
- </execution>
</executions>
</plugin>
<plugin>
diff --git a/core/camel-core/pom.xml b/core/camel-core/pom.xml
index e74d09e..079a7f8 100644
--- a/core/camel-core/pom.xml
+++ b/core/camel-core/pom.xml
@@ -242,6 +242,18 @@
<build>
<plugins>
+ <plugin>
+ <groupId>org.apache.camel</groupId>
+ <artifactId>camel-package-maven-plugin</artifactId>
+ <version>${project.version}</version>
+ <executions>
+ <execution>
+ <id>generate</id>
+ <phase>none</phase>
+ </execution>
+ </executions>
+ </plugin>
+
<!-- generate the attached tests jar -->
<plugin>
<artifactId>maven-jar-plugin</artifactId>
diff --git a/core/pom.xml b/core/pom.xml
index 549aa6f..03c0c7b 100644
--- a/core/pom.xml
+++ b/core/pom.xml
@@ -67,43 +67,12 @@
<version>${project.version}</version>
<executions>
<execution>
- <id>generate-legal</id>
- <goals>
- <goal>generate-legal</goal>
- </goals>
- <phase>prepare-package</phase>
- </execution>
- <execution>
<id>generate</id>
<goals>
- <goal>jandex</goal>
- <goal>generate-schema</goal>
- <goal>generate-type-converter-loader</goal>
- <goal>generate-spi</goal>
- <goal>generate-jaxb-list</goal>
- <goal>generate-eips-list</goal>
- <goal>generate-components-list</goal>
- <goal>generate-dataformats-list</goal>
- <goal>generate-languages-list</goal>
- <goal>prepare-main</goal>
- <goal>generate-xml-parser</goal>
+ <goal>generate</goal>
</goals>
<phase>process-classes</phase>
</execution>
- <execution>
- <id>validate</id>
- <goals>
- <goal>validate-components</goal>
- </goals>
- <phase>prepare-package</phase>
- </execution>
- <execution>
- <id>readme</id>
- <goals>
- <goal>update-readme</goal>
- </goals>
- <phase>package</phase>
- </execution>
</executions>
</plugin>
<plugin>
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGeneratorMojo.java
index 7dd8fa8..612804e 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/AbstractGeneratorMojo.java
@@ -27,6 +27,8 @@ import java.util.function.Supplier;
import org.apache.camel.tooling.util.FileUtil;
import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugin.logging.Log;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Parameter;
@@ -58,6 +60,15 @@ public abstract class AbstractGeneratorMojo extends AbstractMojo {
@Component
protected BuildContext buildContext;
+ public void execute(MavenProject project,
+ MavenProjectHelper projectHelper,
+ BuildContext buildContext) throws MojoFailureException, MojoExecutionException {
+ this.project = project;
+ this.projectHelper = projectHelper;
+ this.buildContext = buildContext;
+ execute();
+ }
+
protected void addResourceDirectory(Path path) {
projectHelper.addResource(project, path.toString(), Collections.singletonList("**/*"), Collections.emptyList());
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java
index 46f0596..4d28503 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ComponentDslMojo.java
@@ -46,6 +46,9 @@ 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.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+import org.sonatype.plexus.build.incremental.BuildContext;
import static org.apache.camel.tooling.util.PackageHelper.findCamelDirectory;
import static org.apache.camel.tooling.util.PackageHelper.loadText;
@@ -64,7 +67,7 @@ public class ComponentDslMojo extends AbstractGeneratorMojo {
/**
* The base directory
*/
- @Parameter(defaultValue = "${basedir}")
+ @Parameter(defaultValue = "${project.basedir}")
protected File baseDir;
/**
@@ -106,6 +109,15 @@ public class ComponentDslMojo extends AbstractGeneratorMojo {
DynamicClassLoader projectClassLoader;
@Override
+ public void execute(MavenProject project, MavenProjectHelper projectHelper, BuildContext buildContext) throws MojoFailureException, MojoExecutionException {
+ buildDir = new File(project.getBuild().getDirectory());
+ baseDir = project.getBasedir();
+ componentsDslPackageName = "org.apache.camel.builder.component";
+ componentsDslFactoriesPackageName = "org.apache.camel.builder.component.dsl";
+ super.execute(project, projectHelper, buildContext);
+ }
+
+ @Override
public void execute() throws MojoExecutionException, MojoFailureException {
try {
projectClassLoader = DynamicClassLoader.createDynamicClassLoader(project.getTestClasspathElements());
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
index 4db8b80..ba85056 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointDslMojo.java
@@ -60,6 +60,8 @@ import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.plugins.annotations.ResolutionScope;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+import org.sonatype.plexus.build.incremental.BuildContext;
/**
* Generate Endpoint DSL source files for Components.
@@ -91,7 +93,7 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
/**
* The base directory
*/
- @Parameter(defaultValue = "${basedir}")
+ @Parameter(defaultValue = "${project.basedir}")
protected File baseDir;
/**
@@ -127,6 +129,19 @@ public class EndpointDslMojo extends AbstractGeneratorMojo {
DynamicClassLoader projectClassLoader;
@Override
+ public void execute(MavenProject project, MavenProjectHelper projectHelper, BuildContext buildContext) throws MojoFailureException, MojoExecutionException {
+ buildDir = new File(project.getBuild().getDirectory());
+ baseDir = project.getBasedir();
+ endpointFactoriesPackageName = "org.apache.camel.builder.endpoint";
+ componentsFactoriesPackageName = "org.apache.camel.builder.endpoint.dsl";
+ generateEndpointBuilderFactory = true;
+ generateEndpointBuilders = true;
+ generateEndpointDsl = Boolean.parseBoolean(project.getProperties().getProperty("camel-generate-endpoint-dsl", "false"));
+ sourcesOutputDir = new File(project.getBasedir(), "src/generated/java");
+ super.execute(project, projectHelper, buildContext);
+ }
+
+ @Override
public void execute() throws MojoExecutionException, MojoFailureException {
if (!generateEndpointDsl) {
return;
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
index 931a6ca..9b63122 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/EndpointSchemaGeneratorMojo.java
@@ -114,6 +114,15 @@ public class EndpointSchemaGeneratorMojo extends AbstractGeneratorMojo {
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (classesDirectory == null) {
+ classesDirectory = new File(project.getBuild().getOutputDirectory());
+ }
+ if (sourcesOutputDir == null) {
+ sourcesOutputDir = new File(project.getBasedir(), "src/generated/java");
+ }
+ if (resourcesOutputDir == null) {
+ resourcesOutputDir = new File(project.getBasedir(), "src/generated/resources");
+ }
if (!classesDirectory.isDirectory()) {
return;
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
new file mode 100644
index 0000000..b47d7e7
--- /dev/null
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/GenerateMojo.java
@@ -0,0 +1,219 @@
+/*
+ * 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.
+ */
+package org.apache.camel.maven.packaging;
+
+import java.io.File;
+import java.io.IOError;
+import java.io.IOException;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Set;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import java.util.zip.ZipFile;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.AbstractMojo;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugins.annotations.Component;
+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.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
+import org.sonatype.plexus.build.incremental.BuildContext;
+
+/**
+ *
+ */
+@Mojo(name = "generate", threadSafe = true, requiresDependencyResolution = ResolutionScope.COMPILE_PLUS_RUNTIME,
+ defaultPhase = LifecyclePhase.PROCESS_CLASSES)
+public class GenerateMojo extends AbstractMojo {
+
+ @Parameter(property = "project", required = true, readonly = true)
+ protected MavenProject project;
+ @Component
+ protected MavenProjectHelper projectHelper;
+ @Component
+ protected BuildContext buildContext;
+ @Component
+ private MavenSession session;
+ @Parameter(defaultValue = "${showStaleFiles}")
+ private boolean showStaleFiles;
+
+ @Override
+ public void execute() throws MojoExecutionException, MojoFailureException {
+ try {
+ if (!isUpToDate(project)) {
+ doExecute();
+ writeIncrementalInfo(project);
+ }
+ } catch (Exception e) {
+ throw new MojoFailureException("Error generating data " + e.toString(), e);
+ }
+ }
+
+ protected void doExecute() throws MojoFailureException, MojoExecutionException {
+ // jandex
+ invoke(PackageJandexMojo.class);
+ // generate-schema
+ invoke(SchemaGeneratorMojo.class);
+ // generate-type-converter-loader
+ invoke(TypeConverterLoaderGeneratorMojo.class);
+ // generate-spi
+ invoke(SpiGeneratorMojo.class);
+ // generate-jaxb-list
+ invoke(PackageJaxbMojo.class);
+ // generate-eips-list
+ invoke(PackageModelMojo.class);
+ // generate-endpoint-schema
+ invoke(EndpointSchemaGeneratorMojo.class);
+ // prepare-components
+ invoke(PrepareComponentMojo.class);
+ // prepare-main
+ invoke(PrepareCamelMainMojo.class);
+ // generate-xml-parser
+ invoke(ModelXmlParserGeneratorMojo.class);
+ // generate-legal
+ invoke(PackageLegalMojo.class);
+ // validate-components
+ invoke(ValidateComponentMojo.class);
+ // generate-endpoint-dsl
+ invoke(EndpointDslMojo.class);
+ // generate-component-dsl
+ invoke(ComponentDslMojo.class);
+ // update-readme
+ invoke(UpdateReadmeMojo.class);
+ }
+
+ private void invoke(Class<? extends AbstractMojo> mojoClass) throws MojoExecutionException, MojoFailureException {
+ try {
+ AbstractMojo mojo = mojoClass.newInstance();
+ mojo.setLog(getLog());
+ mojo.setPluginContext(getPluginContext());
+ ((AbstractGeneratorMojo) mojo).execute(project, projectHelper, buildContext);
+
+ } catch (MojoExecutionException|MojoFailureException e) {
+ throw e;
+ } catch (Exception e) {
+ throw new MojoFailureException("Unable to create mojo", e);
+ }
+ }
+
+ private void writeIncrementalInfo(MavenProject project) throws MojoExecutionException {
+ try {
+ Path cacheData = getIncrementalDataPath(project);
+ String curdata = getIncrementalData();
+ Files.createDirectories(cacheData.getParent());
+ try (Writer w = Files.newBufferedWriter(cacheData)) {
+ w.append(curdata);
+ }
+ } catch (IOException e) {
+ throw new MojoExecutionException("Error checking manifest uptodate status", e);
+ }
+ }
+
+ private boolean isUpToDate(MavenProject project) throws MojoExecutionException {
+ try {
+ Path cacheData = getIncrementalDataPath(project);
+ String prvdata;
+ if (Files.isRegularFile(cacheData)) {
+ prvdata = new String(Files.readAllBytes(cacheData), StandardCharsets.UTF_8);
+ } else {
+ prvdata = null;
+ }
+ String curdata = getIncrementalData();
+ if (curdata.equals(prvdata)) {
+ long lastmod = Files.getLastModifiedTime(cacheData).toMillis();
+ Set<String> stale = Stream.concat(Stream.concat(
+ project.getCompileSourceRoots().stream().map(File::new),
+ Stream.of(new File(project.getBuild().getOutputDirectory()))),
+ project.getArtifacts().stream().map(Artifact::getFile))
+ .flatMap(f -> newer(lastmod, f)).collect(Collectors.toSet());
+ if (!stale.isEmpty()) {
+ getLog().info("Stale files detected, re-generating.");
+ if (showStaleFiles) {
+ getLog().info("Stale files: " + stale.stream().collect(Collectors.joining(", ")));
+ } else if (getLog().isDebugEnabled()) {
+ getLog().debug("Stale files: " + stale.stream().collect(Collectors.joining(", ")));
+ }
+ } else {
+ // everything is in order, skip
+ getLog().info("Skipping generation, everything is up to date.");
+ return true;
+ }
+ } else {
+ if (prvdata == null) {
+ getLog().info("No previous run data found, generating files.");
+ } else {
+ getLog().info("Configuration changed, re-generating files.");
+ }
+ }
+ } catch (IOException e) {
+ throw new MojoExecutionException("Error checking uptodate status", e);
+ }
+ return false;
+ }
+
+ private String getIncrementalData() {
+ return "";
+ }
+
+ private Path getIncrementalDataPath(MavenProject project) {
+ return Paths.get(project.getBuild().getDirectory(), "camel-package-maven-plugin", "org.apache.camel_camel-package-maven-plugin_info_xx");
+ }
+
+ private long lastmod(Path p) {
+ try {
+ return Files.getLastModifiedTime(p).toMillis();
+ } catch (IOException e) {
+ return 0;
+ }
+ }
+
+ private Stream<String> newer(long lastmod, File file) {
+ try {
+ if (file.isDirectory()) {
+ return Files.walk(file.toPath()).filter(Files::isRegularFile).filter(p -> lastmod(p) > lastmod).map(Path::toString);
+ } else if (file.isFile()) {
+ if (lastmod(file.toPath()) > lastmod) {
+ if (file.getName().endsWith(".jar")) {
+ try (ZipFile zf = new ZipFile(file)) {
+ return zf.stream().filter(ze -> !ze.isDirectory()).filter(ze -> ze.getLastModifiedTime().toMillis() > lastmod)
+ .map(ze -> file.toString() + "!" + ze.getName()).collect(Collectors.toList()).stream();
+ }
+ } else {
+ return Stream.of(file.toString());
+ }
+ } else {
+ return Stream.empty();
+ }
+ } else {
+ return Stream.empty();
+ }
+ } catch (IOException e) {
+ throw new IOError(e);
+ }
+ }
+
+}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJandexMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJandexMojo.java
index eb22d1b..741a77b 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJandexMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJandexMojo.java
@@ -28,12 +28,16 @@ import java.util.stream.Collectors;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
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.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
import org.jboss.jandex.Index;
import org.jboss.jandex.IndexWriter;
import org.jboss.jandex.Indexer;
+import org.sonatype.plexus.build.incremental.BuildContext;
/**
* Generate a Jandex index for classes compiled as part of the current project.
@@ -41,7 +45,7 @@ import org.jboss.jandex.Indexer;
* @author jdcasey
*/
@Mojo(name = "jandex", defaultPhase = LifecyclePhase.PROCESS_CLASSES, threadSafe = true)
-public class PackageJandexMojo extends AbstractMojo {
+public class PackageJandexMojo extends AbstractGeneratorMojo {
@Parameter(defaultValue = "${project.build.outputDirectory}")
protected File classesDirectory;
@@ -57,6 +61,14 @@ public class PackageJandexMojo extends AbstractMojo {
private boolean showStaleFiles;
@Override
+ public void execute(MavenProject project, MavenProjectHelper projectHelper, BuildContext buildContext) throws MojoFailureException, MojoExecutionException {
+ classesDirectory = new File(project.getBuild().getOutputDirectory());
+ index = new File(project.getBuild().getOutputDirectory(), "META-INF/jandex.idx");
+ showStaleFiles = Boolean.parseBoolean(project.getProperties().getProperty("showStaleFiles", "false"));
+ super.execute(project, projectHelper, buildContext);
+ }
+
+ @Override
public void execute() throws MojoExecutionException {
if (!classesDirectory.isDirectory()) {
return;
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJaxbMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJaxbMojo.java
index fcdf714..5241859 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJaxbMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageJaxbMojo.java
@@ -83,6 +83,12 @@ public class PackageJaxbMojo extends AbstractGeneratorMojo {
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (index == null) {
+ index = new File(project.getBuild().getDirectory(), "META-INF/jandex.idx");
+ }
+ if (jaxbIndexOutDir == null) {
+ jaxbIndexOutDir = new File(project.getBasedir(), "src/generated/resources");
+ }
List<String> locations = new ArrayList<>();
locations.add(project.getBuild().getOutputDirectory());
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java
index 7916cc7..2c875ce 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageLegalMojo.java
@@ -38,7 +38,7 @@ public class PackageLegalMojo extends AbstractGeneratorMojo {
/**
* The output directory for generated components file
*/
- @Parameter(defaultValue = "${project.build.directory}/classes")
+ @Parameter(defaultValue = "${project.build.outputDirectory}")
protected File legalOutDir;
/**
@@ -50,6 +50,9 @@ public class PackageLegalMojo extends AbstractGeneratorMojo {
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (legalOutDir == null) {
+ legalOutDir = new File(project.getBuild().getOutputDirectory());
+ }
processLegal(legalOutDir.toPath());
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageModelMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageModelMojo.java
index a6b1d1f..3ffc51c 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageModelMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PackageModelMojo.java
@@ -58,6 +58,12 @@ public class PackageModelMojo extends AbstractGeneratorMojo {
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (buildDir == null) {
+ buildDir = new File(project.getBuild().getDirectory());
+ }
+ if (outDir == null) {
+ outDir = new File(project.getBasedir(), "src/generated/resources");
+ }
File camelMetaDir = new File(outDir, "META-INF/services/org/apache/camel/");
camelMetaDir.mkdirs();
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java
index bbfc135..cdd0c29 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/PrepareComponentMojo.java
@@ -40,13 +40,7 @@ import org.sonatype.plexus.build.incremental.BuildContext;
* auto-discovery in Camel and tooling.
*/
@Mojo(name = "prepare-components", threadSafe = true)
-public class PrepareComponentMojo extends AbstractMojo {
-
- /**
- * The maven project.
- */
- @Parameter(property = "project", required = true, readonly = true)
- protected MavenProject project;
+public class PrepareComponentMojo extends AbstractGeneratorMojo {
/**
* The output directory for generated components file
@@ -96,18 +90,20 @@ public class PrepareComponentMojo extends AbstractMojo {
@Parameter(defaultValue = "${project.build.directory}")
protected File buildDir;
- /**
- * Maven ProjectHelper.
- */
- @Component
- private MavenProjectHelper projectHelper;
+ @Parameter(defaultValue = "${camel-prepare-component}")
+ protected boolean prepareComponent;
- /**
- * build context to check changed files and mark them for refresh (used for
- * m2e compatibility)
- */
- @Component
- private BuildContext buildContext;
+ @Override
+ public void execute(MavenProject project, MavenProjectHelper projectHelper, BuildContext buildContext) throws MojoFailureException, MojoExecutionException {
+ configurerSourceOutDir = new File(project.getBasedir(), "src/generated/java");
+ configurerResourceOutDir = componentOutDir
+ = dataFormatOutDir = languageOutDir
+ = otherOutDir = schemaOutDir
+ = new File(project.getBasedir(), "src/generated/resources");
+ buildDir = new File(project.getBuild().getDirectory());
+ prepareComponent = Boolean.parseBoolean(project.getProperties().getProperty("camel-prepare-component", "false"));
+ super.execute(project, projectHelper, buildContext);
+ }
/**
* Execute goal.
@@ -119,6 +115,9 @@ public class PrepareComponentMojo extends AbstractMojo {
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (!prepareComponent) {
+ return;
+ }
int count = 0;
count += new PackageComponentMojo(getLog(), project, projectHelper, buildDir,
componentOutDir, buildContext).prepareComponent();
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
index 73148e7..9eb0a1d 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SchemaGeneratorMojo.java
@@ -112,8 +112,20 @@ public class SchemaGeneratorMojo extends AbstractGeneratorMojo {
protected IndexView indexView;
protected Map<String, JavaClassSource> sources = new HashMap<>();
+ public SchemaGeneratorMojo() {
+ }
+
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (classesDirectory == null) {
+ classesDirectory = new File(project.getBuild().getOutputDirectory());
+ }
+ if (sourcesOutputDir == null) {
+ sourcesOutputDir = new File(project.getBasedir(), "src/generated/java");
+ }
+ if (resourcesOutputDir == null) {
+ resourcesOutputDir = new File(project.getBasedir(), "src/generated/resources");
+ }
if (!classesDirectory.isDirectory()) {
return;
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
index 11d9cfe..d1a4077 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/SpiGeneratorMojo.java
@@ -68,6 +68,15 @@ public class SpiGeneratorMojo extends AbstractGeneratorMojo {
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (classesDirectory == null) {
+ classesDirectory = new File(project.getBuild().getOutputDirectory());
+ }
+ if (sourcesOutputDir == null) {
+ sourcesOutputDir = new File(project.getBasedir(), "src/generated/java");
+ }
+ if (resourcesOutputDir == null) {
+ resourcesOutputDir = new File(project.getBasedir(), "src/generated/resources");
+ }
if (!classesDirectory.isDirectory()) {
return;
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java
index 62be1ee..a538e4b 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/TypeConverterLoaderGeneratorMojo.java
@@ -52,6 +52,8 @@ public class TypeConverterLoaderGeneratorMojo extends AbstractGeneratorMojo {
public static final DotName CONVERTER_ANNOTATION = DotName.createSimple("org.apache.camel.Converter");
+ @Parameter(defaultValue = "${project.build.outputDirectory}")
+ protected File classesDirectory;
@Parameter(defaultValue = "${project.basedir}/src/generated/java")
protected File sourcesOutputDir;
@Parameter(defaultValue = "${project.basedir}/src/generated/resources")
@@ -59,6 +61,15 @@ public class TypeConverterLoaderGeneratorMojo extends AbstractGeneratorMojo {
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (classesDirectory == null) {
+ classesDirectory = new File(project.getBuild().getOutputDirectory());
+ }
+ if (sourcesOutputDir == null) {
+ sourcesOutputDir = new File(project.getBasedir(), "src/generated/java");
+ }
+ if (resourcesOutputDir == null) {
+ resourcesOutputDir = new File(project.getBasedir(), "src/generated/resources");
+ }
if ("pom".equals(project.getPackaging())) {
return;
}
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
index be09a92..6ca5c64 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/UpdateReadmeMojo.java
@@ -41,10 +41,12 @@ import org.apache.camel.tooling.util.PackageHelper;
import org.apache.camel.tooling.util.Strings;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.plugins.annotations.Component;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
+import org.apache.maven.project.MavenProjectHelper;
import org.mvel2.templates.TemplateRuntime;
import org.sonatype.plexus.build.incremental.BuildContext;
@@ -53,13 +55,7 @@ import org.sonatype.plexus.build.incremental.BuildContext;
* files in the project root directory.
*/
@Mojo(name = "update-readme", threadSafe = true)
-public class UpdateReadmeMojo extends AbstractMojo {
-
- /**
- * The maven project.
- */
- @Parameter(property = "project", required = true, readonly = true)
- protected MavenProject project;
+public class UpdateReadmeMojo extends AbstractGeneratorMojo {
/**
* The project build directory
@@ -70,13 +66,13 @@ public class UpdateReadmeMojo extends AbstractMojo {
/**
* The documentation directory
*/
- @Parameter(defaultValue = "${basedir}/src/main/docs")
+ @Parameter(defaultValue = "${project.basedir}/src/main/docs")
protected File docDir;
/**
* The documentation EIP directory
*/
- @Parameter(defaultValue = "${basedir}/src/main/docs/eips")
+ @Parameter(defaultValue = "${project.basedir}/src/main/docs/eips")
protected File eipDocDir;
/**
@@ -85,12 +81,13 @@ public class UpdateReadmeMojo extends AbstractMojo {
@Parameter
protected Boolean failFast;
- /**
- * build context to check changed files and mark them for refresh (used for
- * m2e compatibility)
- */
- @Component
- private BuildContext buildContext;
+ @Override
+ public void execute(MavenProject project, MavenProjectHelper projectHelper, BuildContext buildContext) throws MojoFailureException, MojoExecutionException {
+ buildDir = new File(project.getBuild().getDirectory());
+ docDir = new File(project.getBasedir(), "src/main/docs");
+ eipDocDir = new File(project.getBasedir(), "src/main/docs/eips");
+ super.execute(project, projectHelper, buildContext);
+ }
@Override
public void execute() throws MojoExecutionException {
diff --git a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ValidateComponentMojo.java b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ValidateComponentMojo.java
index 11ea086..acfd0b6 100644
--- a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ValidateComponentMojo.java
+++ b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/ValidateComponentMojo.java
@@ -44,13 +44,7 @@ import org.sonatype.plexus.build.incremental.BuildContext;
* each option
*/
@Mojo(name = "validate-components", threadSafe = true)
-public class ValidateComponentMojo extends AbstractMojo {
-
- /**
- * The maven project.
- */
- @Parameter(property = "project", required = true, readonly = true)
- protected MavenProject project;
+public class ValidateComponentMojo extends AbstractGeneratorMojo {
/**
* Whether to validate if the components, data formats, and languages are
@@ -62,23 +56,10 @@ public class ValidateComponentMojo extends AbstractMojo {
/**
* The output directory for generated components file
*/
- @Parameter(defaultValue = "${project.build.directory}/classes/")
+ @Parameter(defaultValue = "${project.build.outputDirectory}")
protected File outDir;
/**
- * Maven ProjectHelper.
- */
- @Component
- private MavenProjectHelper projectHelper;
-
- /**
- * build context to check changed files and mark them for refresh (used for
- * m2e compatibility)
- */
- @Component
- private BuildContext buildContext;
-
- /**
* Execute goal.
*
* @throws org.apache.maven.plugin.MojoExecutionException execution of the
@@ -88,6 +69,12 @@ public class ValidateComponentMojo extends AbstractMojo {
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
+ if (validate == null) {
+ validate = true;
+ }
+ if (outDir == null) {
+ outDir = new File(project.getBuild().getOutputDirectory());
+ }
if (!validate) {
getLog().info("Validation disabled");
} else {