web-dev-qa-db-fra.com

comment corriger les erreurs de construction pour le code Maven Mulesoft

J'essaie de construire du code mulesoft avec maven dans Bamboo.Build a réussi, mais donne maintenant des erreurs comme ci-dessous. J'utilise Bamboo 6.5.0 et jdk 1.8. avec Maven 3. Les détails de l'erreur sont comme ci-dessous et mon pom.xml, settings.xml ainsi! Toutes les contributions appréciées!

    build   01-Oct-2018 11:46:02    Caused by: org.Apache.maven.plugin.MojoExecutionException: NoFileAssignedException
build   01-Oct-2018 11:46:02        at org.Apache.maven.plugins.install.InstallMojo.installProject(InstallMojo.Java:152)
build   01-Oct-2018 11:46:02        at org.Apache.maven.plugins.install.InstallMojo.execute(InstallMojo.Java:108)
build   01-Oct-2018 11:46:02        at org.Apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.Java:134)
build   01-Oct-2018 11:46:02        at org.Apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.Java:208)
build   01-Oct-2018 11:46:02        ... 20 more
build   01-Oct-2018 11:46:02    Caused by: org.Apache.maven.shared.transfer.project.NoFileAssignedException: The packaging plugin for this project did not assign a main file to the project but it has attachments. Change packaging to 'pom'.
build   01-Oct-2018 11:46:02        at org.Apache.maven.shared.transfer.project.install.internal.DefaultProjectInstaller.install(DefaultProjectInstaller.Java:116)
build   01-Oct-2018 11:46:02        at org.Apache.maven.plugins.install.InstallMojo.installProject(InstallMojo.Java:140)
build   01-Oct-2018 11:46:02        ... 23 more

Mon pom.xml et settings.xml se présentent comme ci-dessous.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>com.mule</groupId>
    <artifactId>mycontacts-mule-api</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>mule</packaging>
    <name>Mule mycontacts-mule-api Application</name>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <mule.version>3.9.0</mule.version>

        <mule.munit.support.version>3.9.1</mule.munit.support.version>
        <munit.version>1.3.7</munit.version>

        <mule.tools.version>1.2</mule.tools.version>
        <application-name>mycontacts-mule-api</application-name>

        <proxy.api.version>1.0:15535407</proxy.api.version>
        <implementation.Host>null</implementation.Host>
        <implementation.port>80</implementation.port>
        <implementation.path>/api</implementation.path>
    </properties>
    <distributionManagement>
        <repository>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
          <id>central</id>
          <name>libs-release</name>
          <url>http://prdbambap02:8081/artifactory/libs-release</url>
        </repository>
        <snapshotRepository>
          <id>snapshots</id>
          <name>libs-snapshot</name>
          <url>http://prdbambap02:8081/artifactory/libs-snapshot</url>
        </snapshotRepository>
    </distributionManagement>
    <build>
        <plugins>
            <plugin>
                <groupId>org.mule.tools.maven</groupId>
                <artifactId>mule-app-maven-plugin</artifactId>
                <version>${mule.tools.version}</version>
                <extensions>true</extensions>
                <configuration>
                    <copyToAppsDirectory>true</copyToAppsDirectory>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>build-helper-maven-plugin</artifactId>
                <version>1.7</version>
                <executions>
                    <execution>
                        <id>add-resource</id>
                        <phase>generate-resources</phase>
                        <goals>
                            <goal>add-resource</goal>
                        </goals>
                        <configuration>
                            <resources>
                                <resource>
                                    <directory>src/main/app/</directory>
                                </resource>
                                <resource>
                                    <directory>mappings/</directory>
                                </resource>
                                <resource>
                                    <directory>src/main/api/</directory>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>

        <testResources>
            <testResource>
                <directory>src/test/munit</directory>
            </testResource>
            <testResource>
                <directory>src/test/resources</directory>
            </testResource>
        </testResources>

    </build>

    <!-- Mule Dependencies -->
    <dependencies>
        <!-- Xml configuration -->
        <dependency>
            <groupId>com.mulesoft.muleesb</groupId>
            <artifactId>mule-core-ee</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- Xml configuration -->
        <dependency>
            <groupId>com.mulesoft.muleesb.modules</groupId>
            <artifactId>mule-module-spring-config-ee</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- Mule Transports -->
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-file</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-http</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.muleesb.transports</groupId>
            <artifactId>mule-transport-jdbc-ee</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.muleesb.transports</groupId>
            <artifactId>mule-transport-jms-ee</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.transports</groupId>
            <artifactId>mule-transport-vm</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- Mule Modules -->
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-scripting</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-xml</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- for testing -->
        <dependency>
            <groupId>org.mule.tests</groupId>
            <artifactId>mule-tests-functional</artifactId>
            <version>${mule.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-apikit</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- dependencies for Mule CoE Begins -->
        <!-- https://mvnrepository.com/artifact/guru.nidi.raml/raml-tester-standalone -->
        <dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId>mule-module-proxy</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId>mule-module-raml-el-gw</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>


        <!--<dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId> mule-module-spring-config-gw</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency> -->

        <dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId>mule-module-spring-config-gw</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
         </dependency>
         <dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId>api-gateway-client</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
         </dependency>
         <dependency>
            <groupId>com.mulesoft.anypoint</groupId>
            <artifactId>gateway-core</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
         </dependency>

        <dependency>
            <groupId>com.mulesoft.munit</groupId>
            <artifactId>mule-munit-support</artifactId>
            <version>${mule.munit.support.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.munit</groupId>
            <artifactId>munit-runner</artifactId>
            <version>${munit.version}</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.munit.utils</groupId>
            <artifactId>munit-dbserver-module</artifactId>
            <version>1.1.0</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-db</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-ws</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.mulesoft.weave</groupId>
            <artifactId>mule-plugin-weave</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-json</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>org.mule.modules</groupId>
            <artifactId>mule-module-cxf</artifactId>
            <version>${mule.version}</version>
            <scope>provided</scope>
        </dependency>
        <!-- dependencies for Mule CoE Ends -->
    </dependencies>

    <repositories>
        <repository>
            <id>Central</id>
            <name>Central</name>
            <url>http://repo1.maven.org/maven2/</url>
            <layout>default</layout>
        </repository>
        <repository>
            <id>mulesoft-releases</id>
            <name>MuleSoft Releases Repository</name>
            <url>http://repository.mulesoft.org/releases/</url>
            <layout>default</layout>
        </repository>
    </repositories>

    <pluginRepositories>
        <pluginRepository>
            <id>mulesoft-release</id>
            <name>mulesoft release repository</name>
            <layout>default</layout>
            <url>http://repository.mulesoft.org/releases/</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>
</project>

et mon settings.xml comme ci-dessous

<?xml version="1.0" encoding="UTF-8"?>
<settings
    xmlns="http://maven.Apache.org/SETTINGS/1.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.Apache.org/SETTINGS/1.0.0 http://maven.Apache.org/xsd/settings-1.0.0.xsd">
    <pluginGroups>
        <pluginGroup>org.mule.tools</pluginGroup>
    </pluginGroups>
    <servers>
        <server>
            <id>mule-ee-repo</id>
            <username>balalba</username>
            <password>blbalbab</password>
        </server>
    </servers>
    <mirrors></mirrors>
    <profiles>
        <profile>
            <id>mule-ee-profile</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
            <properties>
                <mule-maven-plugin-version>2.2.1</mule-maven-plugin-version>
                <mule-username>username</mule-username>
                <mule-password>password</mule-password>
                <mule-client-id>blbalbalbal</mule-client-id>
                <mule-client-secret>blablblalbalba</mule-client-secret>
                <deployment-type>cloudhub</deployment-type>

                <business-group>group</business-group>


                <target-name>null</target-name>
                <target-type>null</target-type>
                <worker-size>Micro</worker-size>
                <worker-count>1</worker-count>
                <env-name>SIT</env-name>
            </properties>
            <repositories>
                <repository>
                    <id>mule-ee-repo</id>
                    <name>mule-ee-repo</name>
                    <url>https://repository.mulesoft.org/nexus-ee/content/repositories/releases-ee/</url>
                    <layout>default</layout>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>mule-ee-profile</activeProfile>
    </activeProfiles>
</settings>
9
DevOps Junky

Apache Maven a déployé une nouvelle version du plug-in d'installation Maven dans leurs référentiels. Il ne semble pas qu'il aurait dû aller au Public Repo, mais quand même.

La solution est de corriger la version du plugin Maven dans le fichier Mule POM.

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
</plugin>
<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <version>2.8.2</version>
</plugin>
4
Damian Calabresi

Il semble que ce soit un problème d'incompatibilité entre le nouveau plugin d'installation de maven et le code mulesoft. Dans mon cas, cela a aidé à utiliser un ancien plugin d'installation - définissez dans pluginManagement la version souhaitée du plugin d'installation maven à utiliser:

    <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-install-plugin</artifactId>
        <version>2.5.2</version>
    </plugin>
2
user5929018

Veuillez mettre à jour le plugin vers la version 1.7, cela devrait résoudre le problème.

<plugin>
  <groupId>org.mule.tools.maven</groupId>
  <artifactId>mule-app-maven-plugin</artifactId>
  <version>1.7</version>
  <extensions>true</extensions>
  <configuration>
    <copyToAppsDirectory>true</copyToAppsDirectory>
  </configuration>
</plugin>
2
will_p

Cette solution a fonctionné après avoir ajouté le explicite suivant dans mon fichier .pom de projet.

           <plugin>
               <groupId>org.Apache.maven.plugins</groupId>
               <artifactId>maven-install-plugin</artifactId>
               <version>2.5.2</version>
           </plugin>
           <plugin>
               <groupId>org.Apache.maven.plugins</groupId>
               <artifactId>maven-deploy-plugin</artifactId>
               <version>2.8.2</version>
           </plugin>

Dans mon projet, artifiact maven-install-plugin 2.5.2 était déjà inclus, mais pas maven-deploy-plugin. Il semble qu'il utilise un artefact maven-deploy-plugin sous l'eau. Bien qu'il ne soit pas défini dans le fichier .pom du projet, mvn récupère la dernière version dans le référentiel (qui est 3.0.0-M1), ce qui se termine par une erreur.

1
Mike Wes

Même problème ici, qui se produit en raison de la nouvelle version de maven-install-plugin (3.0.0-M1). La solution pour mon cas consiste à ignorer l'installation du projet avec un emballage personnalisé (karaf-Assembly).

<plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <configuration>
       <skip>true</skip>
    </configuration>
</plugin>

Bien sûr, les artefacts construits ne se termineront pas dans le répertoire .m2, mais c'est correct dans mon cas.

1
miro

Nous venons de rencontrer le même problème avec nos pipelines ce matin, mais pour arrêter cette NoFileAssignedException lorsque la phase de déploiement se produit, nous avons dû l'exclure explicitement dans le POM pour l'application Mule;

  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-deploy-plugin</artifactId>
    <configuration>
      <skip>true</skip>
    </configuration>
  </plugin >
  <plugin>
    <groupId>org.Apache.maven.plugins</groupId>
    <artifactId>maven-install-plugin</artifactId>
    <version>2.5.2</version>
  </plugin>

Ignorer le déploiement de l'application n'est pas un problème pour nous, car l'artefact construit est actuellement déployé par Git runner (dans cet environnement particulier).

1
Stu.C

Il choisit la version 3.0.0-M1 car il est installé dans votre référentiel m2. vous pouvez le restreindre par le versionnage forcé. Ouvrez .m2/repository/org/Apache/maven/plugins/maven-install-plugin/maven-metadata-central-mirror.xml

Changez comme ci-dessous pour la version 2.5.2

<?xml version="1.0" encoding="UTF-8"?>
<metadata>
  <groupId>org.Apache.maven.plugins</groupId>
  <artifactId>maven-install-plugin</artifactId>
  <version>2.5.2</version>
  <versioning>
    <latest>3.0.0-SNAPSHOT</latest>
    <release>2.5.2</release>
    <versions>
      <version>maven-install-plugin</version>
      .....
      ......
    </versions>
    <lastUpdated>20180930132927</lastUpdated>
  </versioning>
</metadata>
0
Viswa