Uploaded image for project: 'Axis2'
  1. Axis2
  2. AXIS2-5783

Maven axis2-repo-maven-plugin + Maven WAR plugin with *.mar artifacts

    Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Trivial
    • Resolution: Not A Problem
    • Affects Version/s: 1.7.3
    • Fix Version/s: None
    • Component/s: Tools
    • Labels:
      None

      Description

      I have a conflict currently between the 'axis2-repo-maven-plugin' and the 'maven-war-plugin'.

      At some point someone upgraded the Maven WAR plugin so that it automatically packs any "<type>mar</type>" runtime dependency into the resulting WAR. Unfortunately it is also not possible to disable this "feature" on the maven-war-plugin.

      I want to use the axis2-repo-maven-plugin to place different ".mar" artifacts into two different Axis2 repositories in the same WAR (i.e. WEB-INF/modules and WEB-INF/client/modules). While the axis2-repo-maven-plugin does its job perfectly, the WAR plugin always runs last and packs ALL MAR artifacts into WEB-INF/modules.

      My "workaround" which is most likely not release-viable was to change the axis2-repo-maven-plugin CreateRepositoryMojo.java so that it works on MAR artifacts with scope "provided" instead of "runtime" and "@requiresDependencyResolution compile" instead of "runtime". This keeps the WAR plugin from packing them automatically and allows me to run two separate executions for my two repositories.

      /**
       * Creates an Axis2 repository from the project's runtime dependencies. This goal is typically
       * used to build an Axis2 repository that will be packaged into some kind of distribution.
       * 
       * @goal create-repository
       * @phase package
       * @requiresDependencyResolution compile
       */
      public class CreateRepositoryMojo extends AbstractCreateRepositoryMojo {
          /**
           * The output directory where the repository will be created.
           * 
           * @parameter default-value="${project.build.directory}/repository"
           */
          private File outputDirectory;
          
          @Override
          protected String getScope() {
              return Artifact.SCOPE_PROVIDED;
          }
      
          @Override
          protected File getOutputDirectory() {
              return outputDirectory;
          }
      }
      

      I am not sure what a release-viable solution would look like...or even if it is a concern for this plugin(?!?). The best-possible solution would be an option to exclude .mar artifacts in the maven-war-plugin ... but if possible I want to get away from having to customize the Axis2 Plugin with every new release.

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              JWT007 Jeff Thomas
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: