maven 学习笔记(六)-创建简单的多模块maven项目)

IDEA使用Maven创建父与子多模块项目 在 IntelliJ IDEA 中使用 Maven 创建父与子多模块项目是一个常见的开发实践,有助于更好地组织和管理代码。在多模块项目中,可以将公共的代码、资源或配置抽离到独立的模块中,然后在其他模块中直接引用。这样可以避免代码重复,提高代码的重用性。 阅读详情

   例子包括的子模块有:一个java工程,一个android 库工程(打包为aar),一个Android 项目

    一、首先创建一个简单的空maven工程demo,创建流程如下图:

   1、


2.


3.




    二、创建一个java工程utils,创建流程如下图:

   1、


2.


3.


3.

 


4.




5.



6.pom.xml文件内容如下:

<?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/maven-v4_0_0.xsd">


 

   <modelVersion>4.0.0</modelVersion>

	 <parent>
    <groupId>com.special.demo</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <groupId>com.special.demo.utils</groupId>
  <artifactId>utils</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>
  <name>utils</name>
  <url>http://maven.apache.org</url>
  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>
    <dependencies>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>lang</artifactId>
            <version>2.4</version>
        </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
<build>
        <finalName>${project.artifactId}-${project.version}</finalName>
        <sourceDirectory>src/main/java</sourceDirectory>
        <resources>
            <resource>
                <directory>${basedir}/src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <executions>
                    <execution>
                        <phase>compile</phase>
                    </execution>
                </executions>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.1</version>
                <configuration>
                    <!-- <finalName>${project.build.name}</finalName> -->
                    <attach>true</attach>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
                <executions>
                    <execution>
                        <phase>compile</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- clean插件 -->
            <plugin>
                <artifactId>maven-clean-plugin</artifactId>
                <version>2.4.1</version>
                <configuration>
                    <filesets>
                        <fileset>
                            <directory>${project.build.directory}</directory>
                        </fileset>
                    </filesets>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.1</version>
                <configuration>
                    <archive>
                        <!-- 不把pom.xml打入jar中 -->
                        <addMavenDescriptor>false</addMavenDescriptor>
                        <manifestFile>
                            ${basedir}/src/main/META-INF/MANIFEST.MF
                        </manifestFile>
                        <manifest>
                            <!-- <addClasspath>true</addClasspath> <classpathPrefix>lib/</classpathPrefix> -->
                        </manifest>
                    </archive>
                </configuration>
            </plugin>

        </plugins>
    </build>


    <profiles>

        <!-- 打包混淆 -->
        <profile>
            <id>proguard</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>

            <properties>
                <project.build.release>false</project.build.release>
                <project.build.obfuscate>true</project.build.obfuscate>
            </properties>
            <build>
                <!-- <filters> <filter>src/main/resources/env-debug.properties</filter> 
                    </filters> -->

                <plugins>
                    <plugin>
                        <groupId>com.pyx4me</groupId>
                        <artifactId>proguard-maven-plugin</artifactId>
                        <version>2.0.4-SONATYPE</version>
                        <executions>
                            <execution>
                                <phase>package</phase>
                                <goals>
                                    <goal>proguard</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <obfuscate>${project.build.obfuscate}</obfuscate>
                            <proguardInclude>${basedir}/proguard-project.txt</proguardInclude>
                            <release>${project.build.release}</release>

                            <libs>
                                <!-- <lib>libs/commons-lang-2.4.jar</lib> <lib>libs/commons-lang-2.4.jar</lib> -->
                            </libs>

                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>


        <profile>
            <!-- 上线发布(不混淆jar) -->
            <id>release</id>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <properties>
                <project.build.obfuscate>false</project.build.obfuscate>
                <project.build.release>true</project.build.release>
            </properties>
            <build>
                <!-- <filters> <filter>src/main/resources/env-release.properties</filter> 
                    </filters> -->
                <plugins>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>



    三、创建一个android工程textviewsdk,创建流程如下图:

   1、


2.



3.



4.


5.pom.xml文件内容如下:

<?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/maven-v4_0_0.xsd">


 

   <modelVersion>4.0.0</modelVersion>

<parent>
        <artifactId>demo</artifactId>
        <groupId>com.special.demo</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.special.demo.view</groupId>
    <artifactId>textviewsdk</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>aar</packaging>
    <name>textviewsdk</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <platform.version>4.1.1.4</platform.version>
        <android.plugin.version>4.0.0-rc.2</android.plugin.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.google.android</groupId>
            <artifactId>android</artifactId>
            <version>${platform.version}</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>
        <build>
        <finalName>${project.artifactId}</finalName>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                    <artifactId>android-maven-plugin</artifactId>
                    <version>${android.plugin.version}</version>
                    <extensions>true</extensions>
                                        <executions>
                        <!-- <execution> <id>run</id> <goals> <goal>deploy</goal> <goal>run</goal> 
                            </goals> <phase>install</phase> </execution> -->
                        <execution>
                            <id>alignApk</id>
                            <phase>install</phase>
                            <goals>
                                <goal>zipalign</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                             <assetsDirectory>${project.basedir}/assets</assetsDirectory>
                        <resourceDirectory>${project.basedir}/res</resourceDirectory>
                        <!-- 
                        <androidManifestFile>${project.build.directory}/filtered-manifest/AndroidManifest.xml</androidManifestFile>
                         -->
                         <androidManifestFile>${project.basedir}/AndroidManifest.xml</androidManifestFile>
                        <nativeLibrariesDirectory>${project.basedir}/libs</nativeLibrariesDirectory>
                        <!-- <proguardConfig>proguard.cfg</proguardConfig> -->
                        <proguardConfig>proguard-project.txt</proguardConfig>
                        <proguardSkip>${project.build.proguardSkip}</proguardSkip>
                        <manifestDebuggable>${manifest.debuggable}</manifestDebuggable>

                        <release>${project.build.release}</release>
                        <run>
                            <debug>${project.build.debug}</debug>
                        </run>
                        <runDebug>${project.build.runDebug}</runDebug>
                        <sign>
                            <debug>${project.build.sign.debug}</debug>
                        </sign>
                        <undeployBeforeDeploy>false</undeployBeforeDeploy>
                        <mergeManifests>true</mergeManifests>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                <artifactId>android-maven-plugin</artifactId>
                <configuration>
                    <sdk>
                        <platform>16</platform>
                    </sdk>
                                    </configuration>
            </plugin>
        </plugins>
    </build>
</project>




  四、按前面的流程创建一个android工程apptest,创建后整个项目结构图如下:



      五、demo地址下载链接地址如下:

       https://github.com/spring5555/mvn-android-simple-demo5



Maven多模块项目经验 最近被一个多模块项目搞的头晕眼花,最后经过多次摸索终于发现了如何使用maven来创建多模块的项目。现在把一些经验和教训总结一下供后来人借鉴和指教。 maven的作用 毋庸置疑,maven是用来创建一个项目的基本构架以使得这个工程可以方便的重复构建。 maven的生命周期 谈到项目,不得不提到一个基本项目的生命周期,也就是说在项目被maven打包成jar, war等等不同的包装的时候 阅读详情

相关推荐

创建maven多模块项目的实战演练

本文还有配套的精品资源,点击获取 简介:Maven作为Java开发的构建工具,采用标准目录结构和XML配置文件(pom.xml)管理项目构建。在大型项目中,多模块结构有助于提高模块化、复用性和可维护性。本文实例演示了如何创建一个基于SSM框架的简单maven多模块项目,并详细介绍了模块间关系、继承以及如何通过Maven命令管理项目构建。 1. Maven介绍及构建...

weixin_28939623的博客 895

结合实际项目分析maven pom.xml文件中各个标签的作用

maven的pom文件有各种标签,有的比较常用,需要掌握,有的很少遇到,则不一定需要掌握。 所以找了个规模较大的开源项目来分析一下有哪些标签比较常用,以及他们的具体含义。 加上了个人的注释后: <?xml version="1.0" encoding="UTF-8"?> <!-- ~ Copyright 2018-2020 Pnoker. All Rights Reserved. ~ ~ Licensed under the Apache License, Versio

小楼夜听雨的博客 1720

同步整流buck电路图设计:手把手入门必看

从零开始拆解同步整流Buck电路图及其原理,手把手带你画出关键拓扑、选型MOSFET、分析续流路径。重点讲清占空比控制逻辑与体二极管导通损耗的规避方法,让buck电路图及其原理真正落地可调、稳定可靠。

weixin_33308579的博客 996

maven(四)-maven属性

Maven的六类属性 1.内置属性 主要有两个常用内置属性:${basedir}项目的根目录(包含pom.xml文件的目录),${version}项目版本 2.POM属性 用户可以使用该属性引用POM文件中对应元素的值,常用的POM属性包括: ${project.build.sourceDirectory}:项目的主源码目录,默认为src/main/java ${project.bui...

haoxin963的专栏 593

TMC5160电机驱动芯片实战:从模式选择到参数配置全解析

本文深入解析TMC5160电机驱动芯片的实战应用,涵盖三种核心工作模式的选择策略与参数配置。详细介绍了全功能运动控制、外部脉冲驱动及独立驱动模式的应用场景与配置要点,并提供了电流控制、静音优化、SPI通信及高级功能(如StallGuard2)的调优指南,帮助开发者充分发挥其高精度、低噪音性能。

weixin_29179311的博客 323

电磁波函数复数表示法:为什么物理学家偏爱e^(ikz)而非cos(kr-wt)?

本文深入解析了电磁波函数复数表示法(如e^(ikz))相较于传统余弦形式的巨大优势。通过欧拉公式,复数形式将复杂的三角运算转化为简洁的指数运算,在微分、积分、线性叠加及处理相位时展现出极高的计算效率,是物理学家和工程师分析波动现象的核心工具。

weixin_29094539的博客 499

Maven项目中在xxx.xml ,xxx.properties 中为什么能使用 ${} 来引用pom文件中的属性

--------------------20180927----------------- .xml和 .properties 文件都能配置属性。 .properties文件主要是key-value键值对形式,只需要简单的getProperty(key)方法或者setProperty(key,value)方法就可以读取或者写入内容,如果只是用来进行属性配置,使用.properties文件会比较方便。 参考:XML与Properties文件区别 --------------------20180524-.

qq_44885775的博客 2462

Livox MID360与Fast-LIO2的实战部署指南:从驱动安装到点云处理

本文提供Livox MID360激光雷达与Fast-LIO2激光惯性里程计从零开始的实战部署指南。详细介绍了Ubuntu系统下的驱动安装、网络配置、点云数据验证以及Fast-LIO2算法的编译、参数配置与联合启动流程,帮助开发者快速搭建移动机器人SLAM系统,并包含关键参数调优与常见故障排查方法。

java5的博客 1025

maven简单介绍

1. 下载安装 maven官网:http://maven.apache.org/download.cgi 建议Windows平台下载*.zip压缩包,而Linux平台下载.gz压缩包 下载完放到指定目录下解压即可,然后配置一下环境变量,在cmd里面使用mvn -v 命令查看是否安装成功即可 配置远程仓库镜像地址,下面推荐使用阿里的镜像仓库,在公司需要配置公司的私有仓库 <mirror> <id>nexus-aliyun</id> <

Alan0517 1016

【学习体会】Lighttools8.4.0:软件基本使用+光度学基本概念+系统初始设置

关于Lighttools8.4.0软件的安装教程,详见我的另一篇博文:【软件安装】win10下Lighttools8.4.0(64)光学系统建模软件的安装教程 在本文中,我们将学习到,光度学的基本概念、系统初始设置、物体模型坐标的使用方法、简单光学系统实例、系统浏览器的作用和内容、设置虚拟相机并渲染视图中的图像、仿真结果3D显示等。 如果有其他感兴趣的内容但是我又没有写的,欢迎在评论区留言! 光度学的基本概念 软件的基本介绍 参考博文:https://www.docin.c...

LeonJin的博客 2万+

使用libVLC进行视频截图的C/C++实现

通过这些代码,你可以在C/C++应用程序中实现视频截图功能,并将视频帧保存为图像文件。请注意,本文只提供了基本的示例代码,你可以根据自己的需求进行扩展和修改。libVLC是一个强大的开源多媒体框架,可以用于在C/C++应用程序中处理和播放音频和视频文件。我们将展示如何初始化libVLC,打开视频文件,捕获视频帧并保存为图像文件。在开始编写代码之前,你需要包含libVLC的头文件,并链接相应的库文件。在链接阶段,你需要添加libVLC库的链接选项。在使用libVLC之前,你需要初始化libVLC的实例。

学习使你进步。 471

SpringBoot入门学习之Profile

1、多Profile文件 我们在主配置文件编写的时候,文件名可以是 application-{profile}.properties/yml 默认使用application.properties的配置; 2、yml支持多文档块方式 server: port: 8081 spring: profiles: active: prod ‐‐‐ server: port: 8083 spring: profiles: dev ‐‐‐ server: port: 8084 spring: profiles: pro

weixin_42310074的博客 201

YOLOv11 TensorRT极致加速:C++部署性能优化完全指南

购买即可解锁300+YOLO优化文章,并且还有海量深度学习复现项目,价格仅需两杯奶茶的钱,别人有的本专栏也有!

LXY_LOVE36的博客 118

SpringBoot创建maven多模块项目(实战)

SpringBoot创建maven多模块项目(实战) 工作中一直都是一个人奋战一人一个项目,使用maven管理,看这个也挺好,但是总感觉没有充分发挥maven的功能,于是研究了一下这个,网上关于这个的文章很多,虽然不是很好,但我从中收获了很多,在这集百家所长,写一份实战记录,大家跟着我一块做吧! 声明:构建多模块不是最难的,难点是如果把多模块打包成一个执行jar。......

西魏陶渊明的博客 7万+

论文复现5:UMI Universal Manipulation Interface

UMI 采用手持式夹具,加上精心的界面设计,可实现便携式、低成本和信息丰富的数据收集,以进行具有挑战性的双手和动态操作演示。配备这些功能后,UMI 框架解锁了新的机器人操作功能,只需更改每个任务的训练数据,即可实现零样本可推广的动态、双手、精确和长视野行为。我们通过全面的现实世界实验展示了 UMI 的多功能性和有效性,其中通过 UMI Zeroshot 学习的策略在对不同的人类演示进行训练时可以推广到新的环境和对象。项目主页:https://umi-gripper.github.io/

github_38060285的博客 1977

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

idea创建maven多模块项目

idea创建maven多模块项目一、创建没有关系的多模块二、创建有依赖(“继承”)关系的多模块1.已创建好多模块2.未创建好多模块3.创建聚合工程三、问题1.[FATAL] Non-resolvable parent POM 一、创建没有关系的多模块 目的只为了简单方便,能像eclipse那样,同一个窗口能打开多个项目。废话不说,直接看图吧 同样的方法创建demo2 好了,想创建多少就继续傻瓜式循环创建了 二、创建有依赖(“继承”)关系的多模块 1.已创建好多模块 如果按照上面的方法已经创建

@素素~的博客 5788

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

如何使用Maven创建多模块项目

使⽤maven 提供的多模块构建的特性完成maven 环境下多个模块的项⽬的管理与构建。这⾥以四个模块为例来搭建项⽬,以达到通俗易懂的初衷模块 maven_parent —– 基模块,就是常说的parent (pom)模块 maven_dao —– 数据库的访问层,例如jdbc操作(jar)模 块 maven_service —– 项⽬的业务逻辑层 (jar)模块 maven_controller —– ⽤来接收请求,响应数据 (war)

来都来了 3411

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IDEA创建springBoot/Maven多模块项目

1、首先我们创建一个父项目,选择File->>new->>Project,选择Spring Initializr 点击Next 修改Group和Artifact,该示例项目不做修改,使用默认名称。然后点击Next 由于这是一个父项目,所以我们不添加任何MAVNE依赖,直接点击Next 修改Project name和Project location,该...

weixin_42315600的博客 4508

MAVEN创建多模块项目(水平与树形结构)

很久没有写过博客了,很多东西都在笔记里面,没有整理过。不太喜欢写没有经过自己消化和整理的知识,如果自己都没有搞明白,那还是不要写的好,免得误导其他同学。 这次写的内容主要就是使用MAVEN创建多模块的web项目,之前写过一个SSM整合的博客,也是MAVEN创建的WEB项目,里面的web/dao/service层使用的是package来隔离的,而企业级开发一般不是这么做的,我们会将不同职能的模块使

在路上 1万+

在 Eclipse IDE 中创建多模块 Maven 项目

在本教程中,我想与大家分享如何在 Eclipse IDE 中创建多模块 Maven 项目。有一个非常常见的开发场景,我们需要开发一个包含一些模块的应用程序,如下图所示: 你看,这个应用程序有一些在控制台程序和桌面程序之间共享的通用代码。构建为 Maven 项目,它将包含 3 个模块:共享库、控制台应用程序和桌面应用程序。每个模块都是一个单独的项目。 下图解释了一个包含多个模块的 Maven 项目结构: 这里, CompanyProject 是根 Maven 项目(打包.

allway2的博客 3364

Maven 多模块项目的创建与配置

文章目录前言1. 多模块项目介绍2. 多模块项目创建2.1 父模块创建2.2 子模块创建3. 多模块项目配置3.1 父模块POM文件配置3.1.1 父模块的打包类型3.1.2 继承设置3.1.3 使用dependencyManagement管理依赖版本号3.1.4 使用properties控制依赖包的版本号,便于版本维护3.2 子模块pom配置3.2.1 继承设置3.2.2 依赖设置3.3 测试总结 前言 不太会使用 IDEA 创建 Maven 的多模块项目,而在实际的项目开发中又经常遇到,并且自己平时

菩提小猿的博客 1847

如何通过命令行创建一个Maven多模块项目

通过本教程,您学会了如何使用命令行创建一个Maven多模块项目。Maven的多模块功能有助于高效管理复杂项目,通过逻辑分离关注点和依赖关系来简化开发过程。

疯一样的码农 1014

Maven之多模块项目管理

随着功能迭代,大型Java项目代码量和依赖关系会变得复杂,将项目拆分为多个模块,通过Maven进行统一管理,能显著提升代码复用性和可维护性。本文我将详细讲解Maven多模块项目的设计原则、创建流程、依赖管理及实战技巧,带你掌握多模块项目的核心管理方式。

aa_hdkf_vg的博客 1637

详解Maven多模块Spring Boot项目从创建到打包

详解多模块Spring Boot项目从创建到打包(的坑)(多图) 多模块的优点 在平常的项目开发中,我们一直在追求“高内聚,低耦合”——解耦;从小到函数,再到类,再到模块,都是“解耦”思想的产物,解耦有诸多好处,多模块正是解耦的一种手段;多模块的设计包含但不限于以下好处: 提高开发效率:在开发过程中,将一个项目划分为多个模块,有效地实现并行开发,大大提高了开发效率; 便于维护、调试:在测试、维护...

博采众长,自成一派; 2475

使用 Maven 构建多模块项目

一、概述 在本教程中,我们将学习如何使用 Maven 构建多模块项目。 首先,我们将讨论什么是多模块项目,并看看遵循这种方法的好处。然后我们将设置我们的示例项目。有关 Maven 的良好介绍,请查看本教程。 2. Maven的多模块项目 多模块项目由管理一组子模块的聚合器 POM 构建。在大多数情况下,聚合器位于项目的根目录中,并且必须具有pom类型的打包。 子模块是常规的 Maven 项目,它们可以单独构建,也可以通过聚合器 POM 构建。 通过聚合器 POM 构建项目,每个具有与p.

allway2的博客 8275
上一篇: 创建APK签名文件(包括intellij、eclipse、apktools三种方式)
下一篇: maven 学习笔记(七)-(完整Android项目多渠道打包、签名、混淆进阶)
spring5555
博客等级 码龄12年 7粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值