Je vois beaucoup de questions sur stackoverflow à ce sujet. Mais je ne suis toujours pas en mesure de savoir quel est le problème dans ma façon de construire des projets.
J'ai deux projets de démarrage printanier: we-data et we-web. we-web dépend de we-data. we-data compile bien sur maven. Mais we-web me donne l'erreur ci-dessus.
nous-données pom:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.we</groupId>
<artifactId>data</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>we-data</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<Java.version>1.8</Java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
nous-web pom:
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.we</groupId>
<artifactId>web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>we-web</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.2.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<Java.version>1.8</Java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.we</groupId>
<artifactId>data</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
Chaque fois que je fais maven des objectifs de «compilation de paquetage propre» sur we-web, j’ai l’erreur maven. Tous les symboles dont cela ne se plaint pas se trouvent tous dans le projet we-data. Pour une raison quelconque, il est dit que toutes les classes de we-data ne peuvent pas être trouvées dans we-web. Mais lorsque je lance l'application en tant qu'application de démarrage printanière, tout va bien. Aucune erreur maven ne compte pour ceci:
[INFO] ------------------------------------------------------------------------
[INFO] Building we-web 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-clean-plugin:2.6.1:clean (default-clean) @ web ---
[INFO] Deleting C:\Users\user\Documents\GitHub\we\we-web\target
[INFO]
[INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ web ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 0 resource
[INFO] Copying 0 resource
[INFO]
[INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ web ---
[INFO] Changes detected - recompiling the module!
[INFO] Compiling 10 source files to C:\Users\user\Documents\GitHub\we\we-web\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] /C:/Users/user/Documents/GitHub/we/we-web/src/main/Java/com/we/controller/EmployeeController.Java:[13,25] package com.we.service does not exist
[ERROR] /C:/Users/user/Documents/GitHub/we/we-web/src/main/Java/com/we/controller/EmployeePaymentController.Java:[22,9] cannot find symbol
symbol: class EmployeeService
location: class com.we.controller.EmployeePaymentController
.
.
.
[INFO] 44 errors
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.322 s
[INFO] Finished at: 2016-12-26T15:30:54+05:30
[INFO] Final Memory: 26M/253M
[INFO] ------------------------------------------------------------------------
[WARNING] The requested profile "pom.xml" could not be activated because it does not exist.
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler-plugin:3.1:compile (default-compile) on project web: Compilation failure: Compilation failure:
.
.
J'ai 1.8 jdk utilisé par le STS. Et aussi je n'ai pas mis le projet we-data sur le chemin de compilation pour we-web. Je veux que cela passe, parce que je veux générer une guerre de cela. S'il vous plaît aider. Je suis en train de "nettoyer les paquets de compilation" sur we-data puis sur we-web. "Update maven project" ne m'aide pas non plus.
Cela fait aussi un jour que je suis coincé dans ce problème et que j'ai finalement trouvé la cause première et la solution ici de ce que j'ai fait:
si vous avez les lignes suivantes sur votre pom (votre cas est le we-data} _ pom)
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
vous devriez enlever ces lignes et changer en:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
</plugin>
après avoir eu un indice de M. Deinum j’ai trouvé qu’il avait raison au sujet du pot compilé ne sera pas un pot normal si vous utilisez spring-boot-maven-plugin
, merci pour l’indice de toute façon.
et aussi s'il vous plaît vérifier cette question: Dépendance non trouvée dans le projet Spring Boot
J'ai essayé d'utiliser ceci:
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
<configuration>
<classifier>exec</classifier>
</configuration>
</execution>
</executions>
</plugin>
il fonctionne comme un charme.
Chaque fois que je fais maven des objectifs de "compilation propre à l'installation de paquet" sur we-web I obtenez l'erreur maven. Tous les symboles dont se plaint ne sont pas trouvés sont tous dans le projet we-data.
1) Je pense que vous devriez lire l’introduction sur Maven pom ici et le cycle de vie de Maven .
mvn clean compile package install
est redondant pour les phases de compilation et de paquet car la phase d’installation comprend ces phases (. Donc, faites ceci uniquement:
mvn clean install
2) Votre module Web où vous exécutez l’objectif maven nécessite la dépendance com.we:data:0.0.1-SNAPSHOT
avec votre code actuel:
<dependency>
<groupId>com.we</groupId>
<artifactId>data</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
Si vous ajoutez ou modifiez du code sans installer ce module, le module Web ne peut pas voir ces modifications.
Donc, vous devriez faire mvn clean install
dans le module com.we:data
avant de le faire dans le module Web.
Enfin, le plus simple pour éviter d'avoir une dépendance non mise à jour est d'exécuter mvn clean install
à partir d'un projet multi-module qui agrège ces modules.
Dans pom.xml, Ajouter une dépendance
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
et classe où vous utilisez @Inject Import javax.inject.Inject import javax.inject.Inject
;