georgberky / dependency-update-maven-plugin Goto Github PK
View Code? Open in Web Editor NEWA Maven plugin that creates merge requests for dependency updates.
License: Apache License 2.0
A Maven plugin that creates merge requests for dependency updates.
License: Apache License 2.0
Idea: Using Release Drafter
labels = dependency update
all official maven plugins now require Maven 3.6.3 as a minimum because of API stability and Maven EOL.
The current plugin requires 3.8.8, but this is not set as prerequisite
As a user of the plugin I would like to run the updates in a dry run mode (where the resulting branches are not pushed) in order to not bother my Git upstream repository (i.e., origin
by default) with my tests and changes.
The version of all use maven plugins should be defined.
Hi,
The plugin fails to execute:
[ERROR] Failed to execute goal io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update (default-cli) on project my-tool-submodule: Execution default-cli of goal io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update failed: createDependencyArtifact…ope, dependency.optional) must not be null -> [Help 1]
I see a branch with the name dependency-update/my-orga-tool-toolname-null
.
Since I have modules of my tool in dependencyManagement
section, this might be the reason.
[INFO] --- dependency-update-maven-plugin:0.8.0:update (default-cli) @ my-tool-submodule ---
[DEBUG] Configuring mojo io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update from plugin realm ClassRealm[plugin>io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0, parent: java.net.URLClassLoader@937296d4]
[DEBUG] Configuring mojo 'io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update' with basic configurator -->
[DEBUG] (s) connectionType = connection
[DEBUG] (s) connectionUrl = scm:git:https://github.com/orga/tool-name.git/my-tool-submodule
[DEBUG] (s) developerConnectionUrl = scm:git:https://github.com/orga/tool-name.git/my-tool-submodule
[DEBUG] (s) gitProvider = NATIVE
[DEBUG] (s) localRepository = id: local
url: file://$HOME/.m2/repository/
layout: default
snapshots: [enabled => true, update => always]
releases: [enabled => true, update => always]
blocked: false
[DEBUG] (s) mavenProject = MavenProject: my.package.tool:my-tool-submodule:3.3.0-SNAPSHOT @ $HOME/Projects/git/orga/toolname/mavenmodule/pom.xml
[DEBUG] (s) settings = org.apache.maven.execution.SettingsAdapter@df68a264
[DEBUG] -- end configuration --
[DEBUG] Searching for local_repo.maven-metadata-local_repo.xml.lastUpdated in resolution tracking file.
[DEBUG] Reading resolution-state from: $HOME/.m2/repository/my/package/tool/tool-root/resolver-status.properties
dependencyUpdates: Dependency {groupId=jakarta.ws.rs, artifactId=jakarta.ws.rs-api, version=2.1.5, type=jar}
dependencyUpdates: Dependency {groupId=org.yaml, artifactId=snakeyaml, version=1.25, type=jar}
[INFO] ------------------------------------------------------------------------
[INFO] Reactor Summary for My-Tool 3.3.0-SNAPSHOT:
[INFO]
[INFO] My-Tool ............................................ SUCCESS [ 0.462 s]
[INFO] DT :: Patch Test-App (war) ......................... FAILURE [ 0.053 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.508 s
[INFO] Finished at: 2022-07-18T10:06:22+02:00
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "artifactory" could not be activated because it does not exist.
[ERROR] Failed to execute goal io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update (default-cli) on project my-tool-submodule: Execution default-cli of goal io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update failed: createDependencyArtifact…ope, dependency.optional) must not be null -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update (default-cli) on project my-tool-submodule: Execution default-cli of goal io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update failed: createDependencyArtifact…ope, dependency.optional) must not be null
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:47)
at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:156)
at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:72)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal io.github.georgberky.maven.plugins.depsupdate:dependency-update-maven-plugin:0.8.0:update failed: createDependencyArtifact…ope, dependency.optional) must not be null
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:47)
at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:156)
at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:72)
Caused by: java.lang.NullPointerException: createDependencyArtifact…ope, dependency.optional) must not be null
at io.github.georgberky.maven.plugins.depsupdate.ArtifactoryExtensionsKt.createDependencyArtifact (ArtifactoryExtensions.kt:9)
at io.github.georgberky.maven.plugins.depsupdate.UpdateResolver.getDependencyUpdates (UpdateResolver.kt:47)
at io.github.georgberky.maven.plugins.depsupdate.UpdateResolver.getUpdates (UpdateResolver.kt:21)
at io.github.georgberky.maven.plugins.depsupdate.UpdateMojo$execute$1.invoke (UpdateMojo.kt:46)
at io.github.georgberky.maven.plugins.depsupdate.UpdateMojo$execute$1.invoke (UpdateMojo.kt:39)
at io.github.georgberky.maven.plugins.depsupdate.UpdateMojo.withGit (UpdateMojo.kt:71)
at io.github.georgberky.maven.plugins.depsupdate.UpdateMojo.execute (UpdateMojo.kt:39)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:294)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:960)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:293)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:196)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:566)
at org.apache.maven.wrapper.BootstrapMainStarter.start (BootstrapMainStarter.java:47)
at org.apache.maven.wrapper.WrapperExecutor.execute (WrapperExecutor.java:156)
at org.apache.maven.wrapper.MavenWrapperMain.main (MavenWrapperMain.java:72)
This project was moved from @helpermethod account to @georgberky account. The following things have to be done to have a clean movement:
As a lazy developer, I do not want to define ${project.version} for reactor artifacts in each pom file again and again.
Instead, I will define all modules and versions in my dependencyManagement of the reactor project's root pom like so:
<dependencyManagement>
<dependency>
<groupId>reactor.group.id</groupId>
<artifactId>moduleA</artifactId>
<version>${project.version}</version>
</dependency>
</dependencyManagement>
Those dependencies from the reactor will be left as-is.
This plugin will pick those managed dependencies up and try to downgrade them to the latest version available in the release repository.
PR inc
As developer, I want to set push option depending on my Git Management System. The configurable push options should be enabled for native Git and JGit.
The push option has to be set manually by the developer in the configuration section of the plugin.
As a developer, I want to be informed, if a new version of an already discovered artifact is available in the artifact repository.
Example:
We have already a branch for dependency A with version 1.0. This branch wasn't merged. Then the plugin finds a new version 1.1 for dependency A. Then the plugin logs a warning that a newer version is available. The plugin neither creates a new branch nor updates the existing one.
I would appreciate a `help` goal as with most other elaborated Maven plugins.
Originally posted by @ascheman in #3 (comment)
As developer, I want to make the option StrictHostKeyChecking configurable. The default should be true.
Because testing the plugin as a whole is a non-trivial task, it's probably best to start splitting the plugin into multiple, testable parts.
Each part/class/module should receive their direct dependencies via constructor, so that dependencies can be mocked.
jsoup seems to be even better than JDOM at preserving XML after modification.
Evaluate
The project currently uses jgit
for creating branches, committing modifications, pushing refs, etc... .
While jgit
offers some benefits (Java-based DSL, does not require a native git client) it requires extensive setup for authenticating against a remote repository, which may be acceptable in Docker-based CI environments but not so in non-Docker based environments (Jenkins without Docker agent, local dev machine).
The goal of this ticket is to implement a git provider which uses the native git executable if present.
It appears that this plugin uses the XmlNodePrinter
to write out a pom.xml file which is indented with 4 spaces.
If you have no comments and are indented with 4 spaces then this is fine, however, I have quite a few comments in my pom.xml and I would guess not all pom.xml
files are indented in a consistent way.
Would it be possible to update the pom.xml in a way similar to the versions-maven-plugin which leaves the rest of the pom.xml
untouched?
perform(<list of updates>)
Method is used contrary to naming:
UpdateResolver(
mavenProject = mavenProject,
artifactMetadataSource = artifactMetadataSource,
localRepository = localRepository,
artifactFactory = artifactFactory
)
.updates
.onEach { println("execute im mojo: latestVersion: '${it.latestVersion}' / version:'${it.version}'") }
.filter(VersionUpdate::canSkip)
When running an update on a muli pom project the version of the parent pom is set to null
which breaks the build. The version was something like 0.0.1-SNAPSHOT
before
As developer, I want that if a branch already exists for a dependency and a new version of this dependency is found in Maven repository, then the plugin should rename and change the already existing branch to the new version.
Example:
We have already a branch for dependency A with version 1.0. This branch wasn't merged. Then the plugin finds a new version 1.1 for dependency A. Then the plugin should update the branch with dep A and version 1.0 to version 1.1.
The native Git provider doesn't need the SCM connection information in the POM. But currently, this information is required by our plugin. Therefore, as developer I don't want to set up the SCM information when I choose native git as provider.
On the otherside, when I choose the JGit Provider the plugin should fail if the SCM connection information are missed
Dynamic Groovy makes refactoring really hard and does nothing to prevent NPEs.
Static Groovy has poor IDE support and its type inference is weak.
Switching to Kotlin should solve all those problems and result in smaller stacktraces and better performance.
I have a multi module project where some of the modules define versions themselves. The versions are updated but the POM files seem not to become part of the final git commit.
I will try to create a test scenario/test case for this as soon as my time permits.
With this pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>xy.z</groupId>
<artifactId>z-parent</artifactId>
<version>5.0.17</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<artifactId>z-ui</artifactId>
<version>5.0.11-SNAPSHOT</version>
<properties>
<maven.compiler.source>12</maven.compiler.source>
<maven.compiler.target>12</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<drivers.dir>${project.basedir}/drivers</drivers.dir>
<drivers.downloader.phase>pre-integration-test</drivers.downloader.phase>
</properties>
<dependencies>
<dependency>
<groupId>xy</groupId>
<artifactId>z-db</artifactId>
<version>5.0.37</version>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<!-- Replace artifactId with vaadin-core to use only free components -->
<artifactId>vaadin</artifactId>
<exclusions>
<!-- Webjars are only needed when running in Vaadin 13 compatibility mode -->
<exclusion>
<groupId>com.vaadin.webjar</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.webjars.bowergithub.insites</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.webjars.bowergithub.polymer</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.webjars.bowergithub.polymerelements</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.webjars.bowergithub.vaadin</groupId>
<artifactId>*</artifactId>
</exclusion>
<exclusion>
<groupId>org.webjars.bowergithub.webcomponents</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-spring-boot-starter</artifactId>
<exclusions>
<!-- Excluding so that webjars are not included. -->
<exclusion>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-core</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<dependency>
<groupId>org.jooq.pro</groupId>
<artifactId>jooq</artifactId>
</dependency>
<dependency>
<groupId>com.oracle.ojdbc</groupId>
<artifactId>ojdbc8</artifactId>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>javax.activation</groupId>
<artifactId>activation</artifactId>
<version>1.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.0</version>
</dependency>
<!--
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.4</version>
</dependency>
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-testbench</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<resources>
<resource>
<filtering>true</filtering>
<directory>${basedir}/src/main/resources</directory>
<includes>
<include>**/application*.properties</include>
</includes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
<excludes>
<exclude>**/application*.properties</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>prepare-frontend</goal>
<goal>build-frontend</goal>
</goals>
</execution>
</executions>
</plugin>
<!--
<plugin>
<groupId>com.nickwongdev</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.12.1</version>
<configuration>
<source>12</source>
<target>12</target>
<proc>none</proc>
<complianceLevel>12</complianceLevel>
</configuration>
<executions>
<execution>
<goals>
<goal>compile</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
</plugin>
-->
<plugin>
<groupId>com.amashchenko.maven.plugin</groupId>
<artifactId>gitflow-maven-plugin</artifactId>
<configuration>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<!-- Production mode is activated using -Pproduction -->
<id>production</id>
<properties>
<vaadin.productionMode>true</vaadin.productionMode>
</properties>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>flow-server-production-mode</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<jvmArguments>-Dvaadin.productionMode</jvmArguments>
</configuration>
</plugin>
<plugin>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>build-frontend</goal>
</goals>
<phase>compile</phase>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
<profile>
<id>integration-tests</id>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>start-spring-boot</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>stop-spring-boot</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- Runs the integration tests (*IT) after the server is started -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-failsafe-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>integration-test</goal>
<goal>verify</goal>
</goals>
</execution>
</executions>
<configuration>
<trimStackTrace>false</trimStackTrace>
<enableAssertions>true</enableAssertions>
<systemPropertyVariables>
<!-- Pass location of downloaded webdrivers to the tests -->
<webdriver.chrome.driver>${webdriver.chrome.driver}</webdriver.chrome.driver>
</systemPropertyVariables>
</configuration>
</plugin>
<plugin>
<groupId>com.lazerycode.selenium</groupId>
<artifactId>driver-binary-downloader-maven-plugin</artifactId>
<version>1.0.17</version>
<configuration>
<downloadedZipFileDirectory>${project.basedir}/webdriver/zips</downloadedZipFileDirectory>
<rootStandaloneServerDirectory>${project.basedir}/webdriver</rootStandaloneServerDirectory>
<customRepositoryMap>${project.basedir}/webdrivers.xml</customRepositoryMap>
</configuration>
<executions>
<execution>
<!-- use phase "none" to skip download step -->
<phase>${drivers.downloader.phase}</phase>
<goals>
<goal>selenium</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</profile>
</profiles>
</project>
I get
[ERROR] Failed to execute goal com.github.helpermethod:dependency-update-maven-plugin:0.4.0:update (default-cli) on project tosca-ui: Execution default-cli of goal com.github.helpermethod:dependency-update-maven-plugin:0.4.0:update failed: Cannot get property 'dependencies' on null object -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.helpermethod:dependency-update-maven-plugin:0.4.0:update (default-cli) on project tosca-ui: Execution default-cli of goal com.github.helpermethod:dependency-update-maven-plugin:0.4.0:update failed: Cannot get property 'dependencies' on null object
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:213)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:567)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution default-cli of goal com.github.helpermethod:dependency-update-maven-plugin:0.4.0:update failed: Cannot get property 'dependencies' on null object
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:567)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.NullPointerException: Cannot get property 'dependencies' on null object
at org.codehaus.groovy.runtime.NullObject.getProperty (NullObject.java:60)
at org.codehaus.groovy.runtime.InvokerHelper.getProperty (InvokerHelper.java:190)
at org.codehaus.groovy.runtime.callsite.NullCallSite.getProperty (NullCallSite.java:46)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGetProperty (AbstractCallSite.java:298)
at com.github.helpermethod.UpdateMojo.dependencyManagementUpdates (UpdateMojo.groovy:173)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:567)
at org.codehaus.groovy.reflection.CachedMethod.invoke (CachedMethod.java:101)
at groovy.lang.MetaMethod.doMethodInvoke (MetaMethod.java:323)
at groovy.lang.MetaClassImpl.invokeMethod (MetaClassImpl.java:1217)
at groovy.lang.MetaClassImpl.invokeMethodClosure (MetaClassImpl.java:1050)
at groovy.lang.MetaClassImpl.invokeMethod (MetaClassImpl.java:1092)
at groovy.lang.MetaClassImpl.invokeMethod (MetaClassImpl.java:1041)
at groovy.lang.Closure.call (Closure.java:405)
at groovy.lang.Closure.call (Closure.java:399)
at java_util_concurrent_Callable$call.call (Unknown Source)
at com.github.helpermethod.UpdateMojo$_execute_closure1$_closure9.doCall (UpdateMojo.groovy:57)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:567)
at org.codehaus.groovy.reflection.CachedMethod.invoke (CachedMethod.java:101)
at groovy.lang.MetaMethod.doMethodInvoke (MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod (ClosureMetaClass.java:263)
at groovy.lang.MetaClassImpl.invokeMethod (MetaClassImpl.java:1041)
at groovy.lang.Closure.call (Closure.java:405)
at groovy.lang.Closure.call (Closure.java:421)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.findResults (DefaultGroovyMethods.java:4689)
at org.codehaus.groovy.runtime.DefaultGroovyMethods.findResults (DefaultGroovyMethods.java:4673)
at org.codehaus.groovy.runtime.dgm$267.invoke (Unknown Source)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite$PojoMetaMethodSiteNoUnwrapNoCoerce.invoke (PojoMetaMethodSite.java:244)
at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call (PojoMetaMethodSite.java:53)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:127)
at com.github.helpermethod.UpdateMojo$_execute_closure1.doCall (UpdateMojo.groovy:56)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:567)
at org.codehaus.groovy.reflection.CachedMethod.invoke (CachedMethod.java:101)
at groovy.lang.MetaMethod.doMethodInvoke (MetaMethod.java:323)
at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod (ClosureMetaClass.java:263)
at groovy.lang.MetaClassImpl.invokeMethod (MetaClassImpl.java:1041)
at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call (PogoMetaClassSite.java:37)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (CallSiteArray.java:47)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:115)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (AbstractCallSite.java:135)
at com.github.helpermethod.UpdateMojo.withGit (UpdateMojo.groovy:135)
at com.github.helpermethod.UpdateMojo$withGit.callCurrent (Unknown Source)
at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent (CallSiteArray.java:51)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent (AbstractCallSite.java:156)
at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent (AbstractCallSite.java:168)
at com.github.helpermethod.UpdateMojo.execute (UpdateMojo.groovy:55)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:208)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:154)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:146)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:290)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:194)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
at jdk.internal.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke (Method.java:567)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
[ERROR]
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginExecutionException
As developer, we need a git binary inside the drone image for integration testing to test native git support.
Currently, the workaround to install git in every new ci build. That wastes build time.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.