2017-07-19 3 views
0

J'ai un projet qui a 3 fichiers pom, et 2 profils maven: prod et dev. Les problèmes est que lorsque je lance mon profil dev avec cmdModification de l'ordre du module Maven sur le même profil

mvn clean install -Pdev 

il construit projet avec ordre:

    back-end
  1. ,
  2. frontend

Quand je construis projet avec le profil de prod , il construit le projet avec l'ordre:

  1. frontend
  2. back-end

Quelle est la façon dont je veux. Mais quand je cde

mvn clean install 

Il doit construire des projets avec le profil de dev, et il le fait, mais dans cet ordre: 1.frontend, 2.backend.

et c'est le problème, il change l'ordre du module. Voici la principale pom.xml

<groupId>com.main</groupId> 
<artifactId>Main</artifactId> 
<version>0.0.1-SNAPSHOT</version> 
<packaging>pom</packaging> 
<name>Main</name> 
<description>Main Parent Project</description> 
<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.5.2.RELEASE</version> 
</parent> 

<properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

<modules> 
    <module>backend</module> 
    <module>frontend</module> 
</modules> 

ici est backend pom.xml

<artifactId>backend</artifactId> 
<name>backend</name> 
<description>Backend Project</description> 



<parent> 
    <groupId>com.main</groupId> 
    <artifactId>Main</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 



<dependencies> 
... 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
      <configuration> 
       <executable>true</executable> 
       <profiles>${spring-profiles}</profiles> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <build.profile.id>dev</build.profile.id> 
      <profileActive>dev</profileActive> 
     </properties> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <build.profile.id>prod</build.profile.id> 
      <profileActive>prod</profileActive> 
     </properties> 
      <dependencies> 
       <dependency> 
        <groupId>com.main</groupId> 
        <artifactId>frontend</artifactId> 
        <version>${project.version}</version> 
        <scope>runtime</scope> 
       </dependency> 
      </dependencies> 
    </profile> 
</profiles> 

et voici frontend pom.xml

<artifactId>frontend</artifactId> 
<name>frontend</name> 
<description>Frontend Project</description> 

<parent> 
    <groupId>com.main</groupId> 
    <artifactId>Main</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
</parent> 
<build> 
    <plugins> 
     <plugin> 
      <groupId>com.github.eirslett</groupId> 
      <artifactId>frontend-maven-plugin</artifactId> 
      <version>1.0</version> 
      <configuration> 
       <workingDirectory>src/main/webapp</workingDirectory> 
       <nodeVersion>v6.0.0</nodeVersion> 
       <npmVersion>2.7.1</npmVersion> 
       <nodeDownloadRoot>https://nodejs.org/dist/</nodeDownloadRoot> 
       <npmDownloadRoot>https://registry.npmjs.org/npm/-/</npmDownloadRoot> 
      </configuration> 
      <executions> 
       <execution> 
        <id>install node and npm</id> 
        <goals> 
         <goal>install-node-and-npm</goal> 
        </goals> 
        <phase>generate-resources</phase> 
       </execution> 
       <execution> 
        <id>npm install</id> 
        <goals> 
         <goal>npm</goal> 
        </goals> 
        <configuration> 
         <arguments>install</arguments> 
        </configuration> 
       </execution> 
       <execution> 
        <id>npm rebuild node-sass</id> 
        <goals> 
         <goal>npm</goal> 
        </goals> 

        <configuration> 
         <arguments>rebuild node-sass</arguments> 
        </configuration> 
       </execution> 
       <execution> 
        <id>bower install</id> 
        <goals> 
         <goal>bower</goal> 
        </goals> 
        <configuration> 
         <arguments>install</arguments> 
        </configuration> 
       </execution> 
       <execution> 
        <id>gulp</id> 
        <goals> 
         <goal>gulp</goal> 
        </goals> 
        <phase>generate-resources</phase> 
        <configuration> 

          <arguments>${gulpProfile}</arguments> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>dev</id> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
     <properties> 
      <build.profile.id>dev</build.profile.id> 
      <profileActive>dev</profileActive> 
      <gulpProfile>-d</gulpProfile> 
     </properties> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <build.profile.id>prod</build.profile.id> 
      <profileActive>prod</profileActive> 
      <gulpProfile>-p</gulpProfile> 
     </properties> 
    </profile> 
</profiles> 

Pouvez-vous me aider et dire pourquoi est-ce événement?

Répondre

0

Normalement ce genre de chose est résolu parce que votre frontend dépendrait du pot produit par votre backend.

Ainsi, même si elle n'a pas de dépendance de temps de compilation vous pouvez toujours ajouter une à provided portée:

<dependency> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>backend</artifactId> 
    <version>${project.version}</version> 
    <scope>provided</scope> 
</dependency> 

Cela indiquera le réacteur Maven qu'il doit toujours construire d'abord le back-end, sans changer la artefact résultant qui est construit.

0
  • Première suppression <activation> tag de backend/pom.xml. J'espère que vous devez garder un seul profil actif à la fois par défaut et qui devrait être dev
  • Supprimer la dépendance mentionnée dans backend/pom.xml du profil prod. Votre projet fronend devrait dépendre de backend. Ajouter la dépendance backend dans frontend/pom.xml comme ci-dessous (dans aucun profil spécifique)

code:

<dependency> 
    <groupId>${project.groupId}</groupId> 
    <artifactId>backend</artifactId> 
    <version>${project.version}</version> 
    <scope>provided</scope> 
</dependency> 

Maintenant, essayez les commandes ci-dessous

mvn clean // (default profile `dev`) 
mvn clean --activate-profiles prod  // (with override profile `prod`) 
+0

@Bohdan Levkovych, a fait étapes ci-dessus vous a aidé à résoudre votre problème? –