Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包

admin2024-06-11  11

@[TOC](2022-03-31 多模块打包:dubbo项目打包 解决Error:(6,40) java: 找不到符号、Error:(6,42) java: 程序包com.xxxx.xxxx.webservice.pojo.data不存在问题)

问题描述

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_spring,第1张

当想对多个模块打包时,出现找不到符号或者程序包不存在问题。

这里是一个spring cloud alibaba + zk + dubbo的一个demo小案例。

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_spring_02,第2张

consumer和provider都引用了api模块,导致在打包时找不到引用api模块的类

解决方法

模块之间的关系

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_spring_03,第3张

父模块pom

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_apache_04,第4张

父模块里不要写plugins,因为子模块会继承父模块的plugins,具体的子模块plugins,在子模块pom进行编写。

api子模块pom

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_dubbo_05,第5张

<build>
        <plugins>
<!--            只编译,不会导入相关依赖-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </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>
                <version>2.19.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>-->
        </plugins>
    </build>

consumer子模块pom

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_dubbo_06,第6张

<build>
        <plugins>

            <!--<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </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>
                <version>2.19.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

provider子模块pom

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_apache_07,第7张

<build>
        <plugins>

            <!--<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </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>
                <version>2.19.1</version>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
        </plugins>
    </build>

打包

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_maven_08,第8张

配好plugins之后,找到maven-root,选中clean、package,然后点击上面的绿色运行按钮。当然也可以先双击clean,再双击package(右键-run)都是可以的。

至此子模块就都打包完成了,我这里是dubbo_demo,所以需要将provider和consumer单独跑起来。

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_dubbo_09,第9张

在jar包里也有了api模块的jar包

Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包,Java一个工程模块项目多个功能包工程结构设计 java 多模块项目打包_maven_10,第10张

总结

主要是解决maven多模块打包的问题。

使用了两个打包插件。

  • maven-compiler-plugin:只进行编译(编译我所写的源代码),产生的jar里不会有其它依赖(jar包),这里也符合我的需求,在api模块只有接口和javaBean对象。
  • spring-boot-maven-plugin:spring-boot的打包工具,帮助我们使用java -jar进行运行(为了能够运行,会帮我们导入所依赖的jar包到我们的jar下)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明原文出处。如若内容造成侵权/违法违规/事实不符,请联系SD编程学习网:675289112@qq.com进行投诉反馈,一经查实,立即删除!