[英]Maven spring boot multi module project in intellij not building successfully after maven package command
我在IntelliJ中有一个Spring Boot多模块项目,问题是,当我在IntelliJ中运行该项目时,它可以按预期的方式构建和运行,但是当我尝试使用Maven软件包时,出现此错误:
ng.biosec:enrollment_ws:jar:0.0.1-SNAPSHOT
的POM丢失,没有相关性信息,并且ng.biosec:abis_module:jar:0.0.1-SNAPSHOT
的POM丢失,无相关性信息
然后该过程失败。
这是我的两个模块和父模块的pom.xml: enrollment_ws.xml
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">
<parent>
<artifactId>integron</artifactId>
<groupId>ng.biosec</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>enrollment_ws</artifactId>
<packaging>jar</packaging>
<dependencies>
</dependencies>
</project>
这是abis_module.xml
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">
<parent>
<artifactId>integron</artifactId>
<groupId>ng.biosec</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>abis_module</artifactId>
<packaging>jar</packaging>
</project>
这是cpm.xml
pom文件,它取决于包含上述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">
<parent>
<artifactId>integron</artifactId>
<groupId>ng.biosec</groupId>
<version>0.0.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cpm</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>ng.biosec</groupId>
<artifactId>enrollment_ws</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>ng.biosec</groupId>
<artifactId>abis_module</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
</dependency>
</dependencies>
</project>
cpm
模块包含Spring引导应用程序类。 这是Spring Application类:
@SpringBootApplication
@EnableScheduling
@EnableJpaRepositories(basePackages = {"integron"})
@ComponentScan(basePackages = {"integron"})
@EntityScan(basePackages = {"integron"})
public class BioConnectApplication {
public static void main(String[] args) {
SpringApplication.run(BioConnectApplication.class, args);
}
}
另外,这是父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>
<modules>
<module>enrollment_ws</module>
<module>cpm</module>
<module>verification</module>
<module>abis_module</module>
</modules>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from integron.repository -->
</parent>
<groupId>ng.biosec</groupId>
<artifactId>integron</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>integron</name>
<description>Bio Connect Project</description>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<!-- tag::wsdl[] -->
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaLanguage>WSDL</schemaLanguage>
<generatePackage>integron.client</generatePackage>
<schemas>
<schema>
<url>********?wsdl</url>
</schema>
</schemas>
</configuration>
</plugin>
<!-- end::wsdl[] -->
</plugins>
</build>
<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-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
另外:出于安全原因,我替换了到WSDL
文件的链接,但是maven项目也不会从WSDL
生成类。 任何帮助将不胜感激。
您应该从integron模块描述符中删除<parent>
元素声明,并将其移至子模块。
spring-boot-maven-plugin只能在保存您的Spring Boot应用程序的模块(即cpm模块)中声明。
下面是integron项目描述符应如何:
<?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>
<modules>
<module>enrollment_ws</module>
<module>cpm</module>
<module>verification</module>
<module>abis_module</module>
</modules>
<groupId>ng.biosec</groupId>
<artifactId>integron</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
<name>integron</name>
<description>Bio Connect Project</description>
<properties>
<java.version>1.8</java.version>
</properties>
<build>
<plugins>
<!-- tag::wsdl[] -->
<plugin>
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.1</version>
<executions>
<execution>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<configuration>
<schemaLanguage>WSDL</schemaLanguage>
<generatePackage>integron.client</generatePackage>
<schemas>
<schema>
<url>********?wsdl</url>
</schema>
</schemas>
</configuration>
</plugin>
<!-- end::wsdl[] -->
</plugins>
</build>
<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-web</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
</project>
cpm模块描述符应如下所示:
<?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">
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.1.RELEASE</version>
<relativePath/> <!-- lookup parent from integron.repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>cpm</artifactId>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>ng.biosec</groupId>
<artifactId>enrollment_ws</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>ng.biosec</groupId>
<artifactId>abis_module</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.ws</groupId>
<artifactId>spring-ws-core</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</project>
关于wsdl生成的文件,我猜它们正在生成,但未打包,因为父模块的包装设置为pom 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.