shillner / unleash-maven-plugin

This plugin provides a generic alternative to the error-prone default release plugin provided by Maven. It is designed to require a minimal effort of work for releasing modules and being extensible to integrate in every project setup.
Eclipse Public License 1.0
47 stars 16 forks source link

Release issue with POMless build #105

Closed kevin-james-sp closed 5 years ago

kevin-james-sp commented 6 years ago

Following on from the fix in #98 I finally got to the point of trying to build a release. I am getting this error when the build process tries to update the version tags:

[INFO] 15:44:16,172 Removing artifact-spy-plugin from build configuration. [INFO] 15:44:16,217 Checking remote SCM repository for changes. Initial revision was 95b78679043dfb4b7ebf65e2a3dd37a0c62ff81f [INFO] 15:44:16,218 Tagging local and remote SCM repositories. [INFO] 15:44:16,236 Git - Searching for Git tag '4.0.0' [INFO] 15:44:18,336 Git - Tagging local repository with '4.0.0' [INFO] 15:44:18,337 Git - Committing local changes. [INFO] 15:44:23,228 Git - Commit finished successfully. New revision is: 458fa0f7902bf682a34a5e22c282fcbc192e9045 [INFO] 15:44:32,549 Git - Tag creation finished successfully. New revision is: 95b78679043dfb4b7ebf65e2a3dd37a0c62ff81f [INFO] 15:44:32,550 Detecting all release artifacts that have been produced during the release build for later installation and deployment. [INFO] 15:44:33,345 Updating project modules with release versions (POM and MANIFEST versions) [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.core [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.identityiq [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.identitynow [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.plugins [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.logview [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\features\sailpoint.IIQ_Deployment_Accelerator.feature [ERROR] An exception was caught while processing the workflow step with id 'setDevVersionTycho'. java.lang.NullPointerException at org.eclipse.tycho.versions.engine.VersionsEngine.getProject (VersionsEngine.java:167) at org.eclipse.tycho.versions.engine.VersionsEngine.getMutablePom (VersionsEngine.java:89) at org.eclipse.tycho.versions.engine.VersionsEngine.addVersionChange (VersionsEngine.java:81) at com.itemis.maven.plugins.unleash.steps.actions.tycho.AbstractTychoVersionsStep.execute (AbstractTychoVersionsStep.java:75) at com.itemis.maven.plugins.unleash.steps.actions.tycho.SetDevVersionsTycho.execute (SetDevVersionsTycho.java:57) at com.itemis.maven.plugins.cdi.internal.util.workflow.WorkflowExecutor.executeSequentialWorkflowStep (WorkflowExecutor.java:157) at com.itemis.maven.plugins.cdi.internal.util.workflow.WorkflowExecutor.execute (WorkflowExecutor.java:119) at com.itemis.maven.plugins.cdi.AbstractCDIMojo.execute (AbstractCDIMojo.java:209) 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:954) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) 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)

I tried to use the sample project winterer provided on the original issue to see if it was just a problem with my project, but I get a build error with that project:

[ERROR] Failed to execute goal com.itemis.maven.plugins:unleash-maven-plugin:2.7.4:perform-tycho (default-cli) on project tycho-example-pomless: Execution default-cli of goal com.itemis.maven.plugins:unleash-maven-plugin:2.7.4:perform-tycho failed: WELD-000049: Unable to invoke private void com.itemis.maven.plugins.unleash.util.DevVersionUtil.init() on com.itemis.maven.plugins.unleash.util.DevVersionUtil@3f2ae973: InvocationTargetException: No SCM provider found for SCM with name git. Maybe you need to add an appropriate provider implementation as a dependency to the plugin. One of setGitDir or setWorkTree must be called. -> [Help 1]

(I originally posted this info on the closed issue, but I wasn't sure if you get notified of those or not so I figured best to open another issue)

shillner commented 6 years ago

Hi, have you configured the git provider as a dependency to the plugin? The error message says that no provider could be found. Mittwoch, 15 August 2018, 10:53vorm. +02:00 von Kev James notifications@github.com :

Following on from the fix in #98 I finally got to the point of trying to build a release. I am getting this error when the build process tries to update the version tags: [INFO] 15:44:16,172 Removing artifact-spy-plugin from build configuration. [INFO] 15:44:16,217 Checking remote SCM repository for changes. Initial revision was 95b78679043dfb4b7ebf65e2a3dd37a0c62ff81f [INFO] 15:44:16,218 Tagging local and remote SCM repositories. [INFO] 15:44:16,236 Git - Searching for Git tag '4.0.0' [INFO] 15:44:18,336 Git - Tagging local repository with '4.0.0' [INFO] 15:44:18,337 Git - Committing local changes. [INFO] 15:44:23,228 Git - Commit finished successfully. New revision is: 458fa0f7902bf682a34a5e22c282fcbc192e9045 [INFO] 15:44:32,549 Git - Tag creation finished successfully. New revision is: 95b78679043dfb4b7ebf65e2a3dd37a0c62ff81f [INFO] 15:44:32,550 Detecting all release artifacts that have been produced during the release build for later installation and deployment. [INFO] 15:44:33,345 Updating project modules with release versions (POM and MANIFEST versions) [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.core [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.identityiq [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.identitynow [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.plugins [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\bundles\sailpoint.IIQ_Deployment_Accelerator.logview [INFO] No pom file found at E:\workspace-accelerator\IIQ_Deployment_Accelerator\features\sailpoint.IIQ_Deployment_Accelerator.feature [ERROR] An exception was caught while processing the workflow step with id 'setDevVersionTycho'. java.lang.NullPointerException at org.eclipse.tycho.versions.engine.VersionsEngine.getProject (VersionsEngine.java:167) at org.eclipse.tycho.versions.engine.VersionsEngine.getMutablePom (VersionsEngine.java:89) at org.eclipse.tycho.versions.engine.VersionsEngine.addVersionChange (VersionsEngine.java:81) at com.itemis.maven.plugins.unleash.steps.actions.tycho.AbstractTychoVersionsStep.execute (AbstractTychoVersionsStep.java:75) at com.itemis.maven.plugins.unleash.steps.actions.tycho.SetDevVersionsTycho.execute (SetDevVersionsTycho.java:57) at com.itemis.maven.plugins.cdi.internal.util.workflow.WorkflowExecutor.executeSequentialWorkflowStep (WorkflowExecutor.java:157) at com.itemis.maven.plugins.cdi.internal.util.workflow.WorkflowExecutor.execute (WorkflowExecutor.java:119) at com.itemis.maven.plugins.cdi.AbstractCDIMojo.execute (AbstractCDIMojo.java:209) 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:954) at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288) at org.apache.maven.cli.MavenCli.main (MavenCli.java:192) at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke (Method.java:498) 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) I tried to use the sample project winterer provided on the original issue to see if it was just a problem with my project, but I get a build error with that project: [ERROR] Failed to execute goal com.itemis.maven.plugins:unleash-maven-plugin:2.7.4:perform-tycho (default-cli) on project tycho-example-pomless: Execution default-cli of goal com.itemis.maven.plugins:unleash-maven-plugin:2.7.4:perform-tycho failed: WELD-000049: Unable to invoke private void com.itemis.maven.plugins.unleash.util.DevVersionUtil.init() on com.itemis.maven.plugins.unleash.util.DevVersionUtil@3f2ae973: InvocationTargetException: No SCM provider found for SCM with name git. Maybe you need to add an appropriate provider implementation as a dependency to the plugin. One of setGitDir or setWorkTree must be called. -> [Help 1] (I originally posted this info on the closed issue, but I wasn't sure if you get notified of those or not so I figured best to open another issue) — You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub , or mute the thread .

kevin-james-sp commented 6 years ago

Yes, I downloaded the project from https://github.com/winterer/tycho-example-pomless where the plugin is defined with dependency:

<pluginManagement>
    <plugins>
        <!-- Unleash plugin for automated releases -->
        <plugin>
            <groupId>com.itemis.maven.plugins</groupId>
            <artifactId>unleash-maven-plugin</artifactId>
            <version>${unleash-maven-version}</version>
            <dependencies>
                <dependency>
                    <groupId>com.itemis.maven.plugins</groupId>
                    <artifactId>unleash-scm-provider-git</artifactId>
                    <version>${unleash-scm-provider-git}</version>
                </dependency>
            </dependencies>
        </plugin>
    </plugins>
</pluginManagement>
shillner commented 6 years ago

Ok, I'll see if I can figure out what's going on there tomorrow. Mittwoch, 15 August 2018, 04:18nachm. +02:00 von Kev James notifications@github.com :

Yes, I downloaded the project from https://github.com/winterer/tycho-example-pomless where the plugin is defined with dependency:

      com.itemis.maven.plugins
      unleash-maven-plugin
      ${unleash-maven-version}

              com.itemis.maven.plugins
              unleash-scm-provider-git
              ${unleash-scm-provider-git}

— You are receiving this because you commented. Reply to this email directly, view it on GitHub , or mute the thread .

shillner commented 6 years ago

Hi, I started digging into the tycho code and saw that the polyglot stuff (the pom replacements) are removed too early causing issues while adapting the versions for the next development cycle. Unfortunately I don't know how to get around this yet and had to interrupt work yesterday. I'll try to implement a fix asap.

shillner commented 6 years ago

Ok, I've now invested several hours to find out which component or class is responsible for the creation of the .polyglot.build.properties files in case of pom-less tycho builds. I wasn't able to find that code at all. Had a look into tycho sources, Maven sources and Polyglot Maven sources but didn't find any reasonable location where those files are created. The problem is that I cannot fix this issue without bein able to create these files on-the-fly when setting the dev versions since the Tycho versions engine relies on those files if no pom is present.

I see now two options:

  1. Anyone who wants to use this plugin for pom-less tycho builds can provide me the necessary information.
  2. There will be no support for pom-less tycho build setups.

I'm sorry but I cannot invest much more time into that issue currently. Thanks for your understanding.

kevin-james-sp commented 6 years ago

I just ran a Maven build of my pomless project through the Eclipse debugger and, after I managed to get hold of all the source bundles, it appears that the files are created in the method: public Model read(final Reader input, final Map<String, ?> options) throws IOException, ModelParseException This is at line 90 in org.sonatype.maven.polyglot.TeslaModelProcessor, in polyglot-common from project polyglot-maven-polyglot-0.1.5 (at least that's the version my system is using). Attached is a screenshot of the stack at the point this method is running. image

kevin-james-sp commented 6 years ago

Was the information about the method that produces the polyglot files any use?

shillner commented 5 years ago

Hi, don't know as I dind't look into this again :(

kevin-james-sp commented 5 years ago

It's ok, I generated POMs for them as it seems I was the only one trying to do this... Works ok after a bit of tweaking of the generated files