mavenjirajira-pluginatlassian-plugin-sdk

"A required class was missing while executing org.apache.maven.plugins:maven-help-plugin:3.4.0:effective-pom" when tyrying to update Jira plugin


I recently updated my Jira plugin to version 9. However, I am now getting the following error message when I try to run atlas-debug:

[ERROR] Failed to execute goal com.atlassian.maven.plugins:amps-dispatcher-maven-plugin:8.1.2:debug (default-cli) on project MyProject: Unable to execute mojo: Execution null of goal org.apache.maven.plugins:maven-help-plugin:3.4.0:effective-pom failed: A required class was missing while executing org.apache.maven.plugins:maven-help-plugin:3.4.0:effective-pom: org/apache/maven/model/InputLocation$StringFormatter

I'm slightly puzzled by the reference to amps-dispatcher-mavin-plugin:8.1.2, given that I specifically updated the AMPS version to 8.16.0 (as shown below). Indeed, I get the following message in the console:

[INFO] Project defined AMPS version detected: "8.1.2"

I'm very confused by this because I definitely updated the AMPS version to 8.16.0.

In the build messages in my terminal, I see some references to 8.16.0, such as:

[INFO] --- jira-maven-plugin:8.16.0:test-jar (default-test-jar) @ test2 ---

However, I still see some references to 8.1.2 (in addition to what I mentioned above), such as:

[INFO] <<< amps-dispatcher-maven-plugin:8.1.2:debug (default-cli) < package @ test2 <<<

I tried using atlas-create-jira-plugin to create a new app entirely, and I just edited the Jira version and the AMPS version in the pom.xml:

<?xml version="1.0" encoding="UTF-8"?>

<modelVersion>4.0.0</modelVersion>
<groupId>com.test.test2</groupId>
<artifactId>test2</artifactId>
<version>1.0.0-SNAPSHOT</version>

<organization>
    <name>Example Company</name>
    <url>http://www.example.com/</url>
</organization>

<name>test2</name>
<description>This is the com.test.test2:test2 plugin for Atlassian JIRA.</description>
<packaging>atlassian-plugin</packaging>

<dependencies>
    <dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-api</artifactId>
        <version>${jira.version}</version>
        <scope>provided</scope>
    </dependency>
    <!-- Add dependency on jira-core if you want access to JIRA implementation classes as well as the sanctioned API. -->
    <!-- This is not normally recommended, but may be required eg when migrating a plugin originally developed against JIRA 4.x -->
    <!--
    <dependency>
        <groupId>com.atlassian.jira</groupId>
        <artifactId>jira-core</artifactId>
        <version>${jira.version}</version>
        <scope>provided</scope>
    </dependency>
    -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.10</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>com.atlassian.plugin</groupId>
        <artifactId>atlassian-spring-scanner-annotation</artifactId>
        <version>${atlassian.spring.scanner.version}</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
        <scope>provided</scope>
    </dependency>

    <!-- WIRED TEST RUNNER DEPENDENCIES -->
    <dependency>
        <groupId>com.atlassian.plugins</groupId>
        <artifactId>atlassian-plugins-osgi-testrunner</artifactId>
        <version>${plugin.testrunner.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>jsr311-api</artifactId>
        <version>1.1.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>com.google.code.gson</groupId>
        <artifactId>gson</artifactId>
        <version>2.2.2-atlassian-1</version>
    </dependency>

    <!-- Uncomment to use TestKit in your project. Details at https://bitbucket.org/atlassian/jira-testkit -->
    <!-- You can read more about TestKit at https://developer.atlassian.com/display/JIRADEV/Plugin+Tutorial+-+Smarter+integration+testing+with+TestKit -->
    <!--
    <dependency>
        <groupId>com.atlassian.jira.tests</groupId>
        <artifactId>jira-testkit-client</artifactId>
        <version>${testkit.version}</version>
        <scope>test</scope>
    </dependency>
    -->
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>com.atlassian.maven.plugins</groupId>
            <artifactId>jira-maven-plugin</artifactId>
            <version>${amps.version}</version>
            <extensions>true</extensions>
            <configuration>
                <!-- CHANGE #1 HERE -->
                <banningExcludes>
                   <exclude>com.google.code.gson:gson</exclude>
                </banningExcludes>
                <productVersion>${jira.version}</productVersion>
                <productDataVersion>${jira.version}</productDataVersion>
                <!-- Uncomment to install TestKit backdoor in JIRA. -->
                <!--
                <pluginArtifacts>
                    <pluginArtifact>
                        <groupId>com.atlassian.jira.tests</groupId>
                        <artifactId>jira-testkit-plugin</artifactId>
                        <version>${testkit.version}</version>
                    </pluginArtifact>
                </pluginArtifacts>
                -->
                <enableQuickReload>true</enableQuickReload>

                <!-- See here for an explanation of default instructions: -->
                <!-- https://developer.atlassian.com/docs/advanced-topics/configuration-of-instructions-in-atlassian-plugins -->
                <instructions>
                    <Atlassian-Plugin-Key>${atlassian.plugin.key}</Atlassian-Plugin-Key>

                    <!-- Add package to export here -->
                    <Export-Package>
                        com.test.test2.api,
                    </Export-Package>

                    <!-- Add package import here -->
                    <Import-Package>
                        org.springframework.osgi.*;resolution:="optional",
                        org.eclipse.gemini.blueprint.*;resolution:="optional",
                        *
                    </Import-Package>

                    <!-- Ensure plugin is spring powered -->
                    <Spring-Context>*</Spring-Context>
                </instructions>
            </configuration>
        </plugin>
        <plugin>
            <groupId>com.atlassian.plugin</groupId>
            <artifactId>atlassian-spring-scanner-maven-plugin</artifactId>
            <version>${atlassian.spring.scanner.version}</version>
            <executions>
                <execution>
                    <goals>
                        <goal>atlassian-spring-scanner</goal>
                    </goals>
                    <phase>process-classes</phase>
                </execution>
            </executions>
            <configuration>
                <verbose>false</verbose>
            </configuration>
        </plugin>
    </plugins>
</build>

<properties>
    <!-- CHANGE #2 HERE -->
    <!-- This is what it was originally: -->
    <!-- <jira.version>7.13.0</jira.version>
    <amps.version>8.1.2</amps.version>-->

    <!-- This is what I changed it to -->
    <jira.version>9.12.2</jira.version>
    <amps.version>8.16.0</amps.version>

    <!-- Everything else is exactly the way it was created by atlas-create-jira-plugin -->
    <plugin.testrunner.version>2.0.2</plugin.testrunner.version>
    <atlassian.spring.scanner.version>2.1.7</atlassian.spring.scanner.version>
    <!-- This property ensures consistency between the key in atlassian-plugin.xml and the OSGi bundle's key. -->
    <atlassian.plugin.key>${project.groupId}.${project.artifactId}</atlassian.plugin.key>
    <!-- TestKit version 6.x for JIRA 6.x -->
    <testkit.version>6.3.11</testkit.version>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
</properties>

The stack trace is as follows:

    [INFO] Copying atlassian-plugins-osgi-testrunner-bundle-2.0.2.jar to C:\MinReprex\test2\target\jira\webapp\WEB-INF\atlassian-bundled-plugins\atlassian-plugins-osgi-testrunner-bundle-2.0.2.jar
    [WARNING] Error injecting: org.apache.maven.plugins.help.EffectivePomMojo
    java.lang.NoClassDefFoundError: org/apache/maven/model/InputLocation$StringFormatter
        at java.lang.Class.getDeclaredConstructors0 (Native Method)
        at java.lang.Class.privateGetDeclaredConstructors (Class.java:2671)
        at java.lang.Class.getDeclaredConstructors (Class.java:2020)
        at com.google.inject.spi.InjectionPoint.forConstructorOf (InjectionPoint.java:245)
        at com.google.inject.internal.ConstructorBindingImpl.create (ConstructorBindingImpl.java:115)
        at com.google.inject.internal.InjectorImpl.createUninitializedBinding (InjectorImpl.java:706)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBinding (InjectorImpl.java:929)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive (InjectorImpl.java:852)
        at com.google.inject.internal.InjectorImpl.getJustInTimeBinding (InjectorImpl.java:291)
        at com.google.inject.internal.InjectorImpl.getBindingOrThrow (InjectorImpl.java:222)
        at com.google.inject.internal.InjectorImpl.getProviderOrThrow (InjectorImpl.java:1040)
        at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1071)
        at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1034)
        at com.google.inject.internal.InjectorImpl.getInstance (InjectorImpl.java:1086)
        at org.eclipse.sisu.space.AbstractDeferredClass.get (AbstractDeferredClass.java:48)
        at com.google.inject.internal.ProviderInternalFactory.provision (ProviderInternalFactory.java:85)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision (InternalFactoryToInitializableAdapter.java:57)
        at com.google.inject.internal.ProviderInternalFactory$1.call (ProviderInternalFactory.java:66)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:112)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:127)
        at com.google.inject.internal.ProvisionListenerStackCallback.provision (ProvisionListenerStackCallback.java:66)
        at com.google.inject.internal.ProviderInternalFactory.circularGet (ProviderInternalFactory.java:61)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.get (InternalFactoryToInitializableAdapter.java:47)
        at com.google.inject.internal.InjectorImpl$1.get (InjectorImpl.java:1050)
        at org.eclipse.sisu.inject.Guice4$1.get (Guice4.java:162)
        at org.eclipse.sisu.inject.LazyBeanEntry.getValue (LazyBeanEntry.java:81)
        at org.eclipse.sisu.plexus.LazyPlexusBean.getValue (LazyPlexusBean.java:51)
        at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:263)
        at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:255)
        at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo (DefaultMavenPluginManager.java:519)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:124)
        at org.twdata.maven.mojoexecutor.MojoExecutor.executeMojo (MojoExecutor.java:120)
        at com.atlassian.maven.plugins.amps.util.MojoExecutorWrapperImpl.execute (MojoExecutorWrapperImpl.java:28)
        at com.atlassian.maven.plugins.amps.util.MojoExecutorWrapperImpl.executeWithMergedConfig (MojoExecutorWrapperImpl.java:39)
        at com.atlassian.maven.plugins.amps.MavenGoals.generateEffectivePom (MavenGoals.java:1174)
        at com.atlassian.maven.plugins.amps.product.AbstractWebappProductHandler.addOverridesFromProductPom (AbstractWebappProductHandler.java:191)
        at com.atlassian.maven.plugins.amps.product.AbstractProductHandler.start (AbstractProductHandler.java:253)
        at com.atlassian.maven.plugins.amps.RunMojo.startProduct (RunMojo.java:160)
        at com.atlassian.maven.plugins.amps.RunMojo.startProducts (RunMojo.java:128)
        at com.atlassian.maven.plugins.amps.RunMojo.doExecute (RunMojo.java:96)
        at com.atlassian.maven.plugins.amps.AbstractProductHandlerMojo.execute (AbstractProductHandlerMojo.java:521)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
        at org.twdata.maven.mojoexecutor.MojoExecutor.executeMojo (MojoExecutor.java:119)
        at com.atlassian.maven.plugins.amps.util.MojoUtils.execute (MojoUtils.java:36)
        at com.atlassian.maven.plugins.amps.util.MojoUtils.executeWithMergedConfig (MojoUtils.java:66)
        at com.atlassian.maven.plugins.ampsdispatcher.AbstractAmpsDispatcherMojo.execute (AbstractAmpsDispatcherMojo.java:56)
        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)
    Caused by: java.lang.ClassNotFoundException: org.apache.maven.model.InputLocation$StringFormatter
        at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass (SelfFirstStrategy.java:50)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.unsynchronizedLoadClass (ClassRealm.java:271)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:247)
        at org.codehaus.plexus.classworlds.realm.ClassRealm.loadClass (ClassRealm.java:239)
        at java.lang.Class.getDeclaredConstructors0 (Native Method)
        at java.lang.Class.privateGetDeclaredConstructors (Class.java:2671)
        at java.lang.Class.getDeclaredConstructors (Class.java:2020)
        at com.google.inject.spi.InjectionPoint.forConstructorOf (InjectionPoint.java:245)
        at com.google.inject.internal.ConstructorBindingImpl.create (ConstructorBindingImpl.java:115)
        at com.google.inject.internal.InjectorImpl.createUninitializedBinding (InjectorImpl.java:706)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBinding (InjectorImpl.java:929)
        at com.google.inject.internal.InjectorImpl.createJustInTimeBindingRecursive (InjectorImpl.java:852)
        at com.google.inject.internal.InjectorImpl.getJustInTimeBinding (InjectorImpl.java:291)
        at com.google.inject.internal.InjectorImpl.getBindingOrThrow (InjectorImpl.java:222)
        at com.google.inject.internal.InjectorImpl.getProviderOrThrow (InjectorImpl.java:1040)
        at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1071)
        at com.google.inject.internal.InjectorImpl.getProvider (InjectorImpl.java:1034)
        at com.google.inject.internal.InjectorImpl.getInstance (InjectorImpl.java:1086)
        at org.eclipse.sisu.space.AbstractDeferredClass.get (AbstractDeferredClass.java:48)
        at com.google.inject.internal.ProviderInternalFactory.provision (ProviderInternalFactory.java:85)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.provision (InternalFactoryToInitializableAdapter.java:57)
        at com.google.inject.internal.ProviderInternalFactory$1.call (ProviderInternalFactory.java:66)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:112)
        at com.google.inject.internal.ProvisionListenerStackCallback$Provision.provision (ProvisionListenerStackCallback.java:127)
        at com.google.inject.internal.ProvisionListenerStackCallback.provision (ProvisionListenerStackCallback.java:66)
        at com.google.inject.internal.ProviderInternalFactory.circularGet (ProviderInternalFactory.java:61)
        at com.google.inject.internal.InternalFactoryToInitializableAdapter.get (InternalFactoryToInitializableAdapter.java:47)
        at com.google.inject.internal.InjectorImpl$1.get (InjectorImpl.java:1050)
        at org.eclipse.sisu.inject.Guice4$1.get (Guice4.java:162)
        at org.eclipse.sisu.inject.LazyBeanEntry.getValue (LazyBeanEntry.java:81)
        at org.eclipse.sisu.plexus.LazyPlexusBean.getValue (LazyPlexusBean.java:51)
        at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:263)
        at org.codehaus.plexus.DefaultPlexusContainer.lookup (DefaultPlexusContainer.java:255)
        at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getConfiguredMojo (DefaultMavenPluginManager.java:519)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:124)
        at org.twdata.maven.mojoexecutor.MojoExecutor.executeMojo (MojoExecutor.java:120)
        at com.atlassian.maven.plugins.amps.util.MojoExecutorWrapperImpl.execute (MojoExecutorWrapperImpl.java:28)
        at com.atlassian.maven.plugins.amps.util.MojoExecutorWrapperImpl.executeWithMergedConfig (MojoExecutorWrapperImpl.java:39)
        at com.atlassian.maven.plugins.amps.MavenGoals.generateEffectivePom (MavenGoals.java:1174)
        at com.atlassian.maven.plugins.amps.product.AbstractWebappProductHandler.addOverridesFromProductPom (AbstractWebappProductHandler.java:191)
        at com.atlassian.maven.plugins.amps.product.AbstractProductHandler.start (AbstractProductHandler.java:253)
        at com.atlassian.maven.plugins.amps.RunMojo.startProduct (RunMojo.java:160)
        at com.atlassian.maven.plugins.amps.RunMojo.startProducts (RunMojo.java:128)
        at com.atlassian.maven.plugins.amps.RunMojo.doExecute (RunMojo.java:96)
        at com.atlassian.maven.plugins.amps.AbstractProductHandlerMojo.execute (AbstractProductHandlerMojo.java:521)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.ja

va:137)
    at org.twdata.maven.mojoexecutor.MojoExecutor.executeMojo (MojoExecutor.java:119)
    at com.atlassian.maven.plugins.amps.util.MojoUtils.execute (MojoUtils.java:36)
    at com.atlassian.maven.plugins.amps.util.MojoUtils.executeWithMergedConfig (MojoUtils.java:66)
    at com.atlassian.maven.plugins.ampsdispatcher.AbstractAmpsDispatcherMojo.execute (AbstractAmpsDispatcherMojo.java:56)
    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)

What I tried:

Can someone point out my error here?


Solution

  • It turns out that I shouldn't have updated the AMPS version, just the Jira version.

    When I run atlas-version, I get:

    ATLAS Version:    8.2.7
    ATLAS Home:       C:\Applications\Atlassian\atlassian-plugin-sdk-8.2.7
    ATLAS Scripts:    C:\Applications\Atlassian\atlassian-plugin-sdk-8.2.7\bin
    ATLAS Maven Home: C:\Applications\Atlassian\atlassian-plugin-sdk-8.2.7\apache-maven-3.5.4
    AMPS Version:     8.1.2
    --------
    

    This is in spite of having installed the latest SDK.

    When I changed the AMPS version to 8.1.2, my build worked fine again.