我有以下maven结构
parent POM.XML
- common/pom.xml
- search/pom.xml
当我在common
模块上执行mvn clean install时,搜索模块无法获取search
模块类
我得到package de.test.common does not exists
。我甚至在父平台上运行mvn clean install
但没有成功。 common
模块构建正常。
<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>de.test.search</groupId>
<artifactId>search</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>de.test.platform</groupId>
<artifactId>platform</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<properties>
<app-name>search</app-name>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
<dependency>
<groupId>de.test.common</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>searchdev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<!-- log configuration -->
<logback.loglevel>DEBUG</logback.loglevel>
</properties>
</profile>
<profile>
<id>searchprod</id>
<build>
<plugins>
<plugin>
<groupId>com.heroku.sdk</groupId>
<artifactId>heroku-maven-plugin</artifactId>
<version>1.0.3</version>
<configuration>
<appName>${app-name}</appName>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<!-- log configuration -->
<logback.loglevel>INFO</logback.loglevel>
</properties>
</profile>
</profiles>
</project>
普通的pom
<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>de.test.common</groupId>
<artifactId>common</artifactId>
<packaging>jar</packaging>
<parent>
<groupId>de.test.platform</groupId>
<artifactId>platform</artifactId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<properties>
<app-name>common</app-name>
</properties>
<profiles>
<profile>
<id>commondev</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<properties>
<!-- log configuration -->
<logback.loglevel>DEBUG</logback.loglevel>
</properties>
</profile>
<profile>
<id>commonprod</id>
<build>
<plugins>
<plugin>
<groupId>com.heroku.sdk</groupId>
<artifactId>heroku-maven-plugin</artifactId>
<version>1.0.3</version>
<configuration>
<appName>${app-name}</appName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<properties>
<!-- log configuration -->
<logback.loglevel>INFO</logback.loglevel>
</properties>
</profile>
</profiles>
</project>
我认为我有同样的问题
发现问题但不是原因
我删除了以下依赖项,一切正常
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
删除插件后,jar会以不同的结构构建。当春季启动插件在那里时,整个内容都在BOOT-INF文件夹中,我认为是原因,不确定但是......需要专家意见。
答案 0 :(得分:2)
解决这个问题的最简单方法是通过一个所谓的reactor项目,在其中使用父pom构建所有依赖模块。为此,请将以下代码添加到父POM中:
<modules>
<module>common</module>
<module>search</module>
</modules>
现在,构建父pPOM,您的整个构建应该可行。
另外,不要在子项目中使用显式版本,只从父POM继承版本(我认为你很好)。如果从同一项目反应器引用依赖项,请使用版本${project.version}
。
答案 1 :(得分:1)
找到解决方案。可能有人会发现它很有用。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<classifier>exec</classifier>
</configuration>
</plugin>
</plugins>
</build>