• java:详解常用的pom.xml配置


    详细说明

    这里就不一个一个说明了,只讲几个重要的,其他的用到的时候可以在下面搜索

    modules

    在一般的项目中,我们用 spring MVC 的模式搭建的结构差不多是这样

    • org.myorg.app.dao
    • org.myorg.app.service
    • org.myorg.app.controller
    • org.myorg.app.util

    但随着项目的进行,你可能会遇到如下问题:

    • 这个应用可能需要有一个前台(web小程序app等)和一个管理后台,于是你建了两个应用,但是你发现大部分dao,一些service,和大部分util是在两个应用中重复的,不利于维护。
    • 同样的,pom.xml 中的依赖列表越来越长,难以重用。
    • build整个项目的时间越来越长,尽管你只是一直在web层工作,但你不得不build整个项目。
    • 某个模块,比如util,你只想让一些经验丰富的人来维护,可是,现在这种情况,每个开发者都能修改,这导致关键模块的代码质量不能达到你的要求。

    所以可以看到一些大型项目的目录结构是这样的:
    在这里插入图片描述

    <modules>
        <module>ruoyi-adminmodule>
        <module>ruoyi-frameworkmodule>
        <module>ruoyi-systemmodule>
        <module>ruoyi-quartzmodule>
        <module>ruoyi-generatormodule>
        <module>ruoyi-commonmodule>
    modules>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    parent

    想象这样一个场景,有三个项目A、B、C,它们都需要用到同一个 jar包:common.jar。如果分别在三个项目的pom文件中定义各自对common.jar的依赖,那么当common.jar的版本发生变化时,三个项目的pom文件都要改,项目越多要改的地方就越多,很麻烦。

    这时候就需要用到parent标签, 我们创建一个parent项目,打包类型为pom(parent项目只能是pom,不包含任何代码),parent项目中不存放任何代码,只是管理多个项目之间公共的依赖。在parent项目的pom文件中定义对common.jar的依赖,ABC三个子项目中只需要在parent标签中写上parent项目的pom坐标就可以引用到common.jar了。

    parent 中的 pom.xml

    <groupId>com.baidugroupId>
    <artifactId>baidu-aiartifactId>
    <version>1.0.0version>
    <packaging>pompackaging>
    <parent>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-parentartifactId>
        <version>2.0.5.RELEASEversion>
        <relativePath/>
    parent>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    子模块中的 pom.xml

    <parent>
       <groupId>com.baidugroupId>
       <artifactId>baidu-aiartifactId>
       <version>1.0.0version>
    parent>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    pom.xml 和 setting.xml区别

    setting.xml和pom.xml都是Maven项目的配置文件,但它们的功能和用途有所不同。

    setting.xml是Maven的全局配置文件,通常位于Maven安装目录下的conf文件夹中。它包含了Maven运行时需要用到的各种配置信息,例如本地仓库的位置、服务器的配置、邮件通知的配置等。这些配置信息对于所有的Maven项目都适用,因此它们被放在全局的setting.xml文件中。在多个Maven项目中使用相同的配置可以确保这些项目具有一致的环境和行为。

    pom.xml是Maven项目的项目配置文件,通常位于项目的根目录下。它包含了项目的各种信息,如项目坐标、依赖关系、开发者规则、缺陷管理系统、组织和许可证等。这些信息只适用于当前的项目,因此它们被放在项目的pom.xml文件中。在多个项目中,每个项目都有自己的pom.xml文件,用于描述该项目的独特属性和行为。

    在功能上,setting.xml和pom.xml的区别在于它们包含的配置信息不同。setting.xml包含的是全局的配置信息,而pom.xml则包含的是项目的特定信息。在使用时,这两个文件需要一起考虑,以确定项目的完整配置。

    基础配置

    <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.0http://maven.apache.org/xsd/maven-4.0.0.xsd">
    
        
        <modelVersion>4.0.0modelVersion>
    
        
        <groupId>com.baidugroupId>
    
        
        <artifactId>trade-coreartifactId>
        
        
        <name>trade-corename>
    
        
        <version>1.0.0version>
    
    	<description>这是项目描述description>
    
        
        <packaging>jarpackaging>
    
        
        <classifier>jdk15classifier>
    
    	
    	<modules>
            <module>baidu-commonmodule>
            <module>baidu-aimodule>
        modules>
    
    	
    	<parent>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-parentartifactId>
            <version>2.1.13.RELEASEversion>
            <relativePath/>
        parent>
    
        
        <dependencies>
    
            
            <dependency>
    
                
                
                <groupId>com.winner.tradegroupId>
                <artifactId>trade-testartifactId>
                <version>1.0.0-SNAPSHOTversion>
    
                
                
                <scope>testscope>
    
                
                <optional>falseoptional>
    
                
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4jgroupId>
                        <artifactId>slf4j-apiartifactId>
                    exclusion>
                exclusions>
    
            dependency>
    
        dependencies>
    
        
        <properties>
            <file.encoding>UTF-8file.encoding>
            <java.version>1.8java.version>
            <mysql.version>8.0.22mysql.version>
        properties>
    
    	
    	<build>
            <plugins>
                
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-compiler-pluginartifactId>
                    <version>3.1version>
                    <configuration>
                        <source>${java.version}source>
                        <target>${java.version}target>
                    configuration>
                plugin>
    
                
                <plugin>
                    <groupId>org.apache.maven.pluginsgroupId>
                    <artifactId>maven-surefire-pluginartifactId>
                    <version>2.12.4version>
                    <configuration>
                        <skipTests>trueskipTests>
                    configuration>
                plugin>
            plugins>
        build>
        ...
    project>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111

    构建配置

    <build>  
      
          
        <finalName>myPorjectNamefinalName>  
      
          
        <directory>${basedir}/targetdirectory>  
      
          
          
        <defaultGoal>installdefaultGoal>  
      
          
          
        <filters>  
            <filter>../filter.propertiesfilter>  
        filters>  
      
          
        <resources>  
            <resource>  
      
                  
                  
                  
                <targetPath>resourcestargetPath>  
      
                  
                <filtering>truefiltering>  
      
                  
                <directory>src/main/resourcesdirectory>  
      
                  
                <includes>  
                    <include>**/*.propertiesinclude>  
                    <include>**/*.xmlinclude>  
                includes>  
      
                  
                <excludes>  
                    <exclude>jdbc.propertiesexclude>  
                excludes>  
      
            resource>  
        resources>  
      
          
        <testResources>  
            <testResource>  
                <targetPath />  
                <filtering />  
                <directory />  
                <includes />  
                <excludes />  
            testResource>  
        testResources>  
      
          
        <sourceDirectory>${basedir}\src\main\javasourceDirectory>  
      
        <!--项目脚本源码目录,该目录和源码目录不同,   
        <testSourceDirectory>${basedir}\src\test\javatestSourceDirectory>  
      
          
        <outputDirectory>${basedir}\target\classesoutputDirectory>  
      
          
        <testOutputDirectory>${basedir}\target\test-classes  
        testOutputDirectory>  
      
          
          
          
        <extensions>  
      
              
              
              
              
              
            <extension>  
                <groupId>org.apache.maven.wagongroupId>  
                <artifactId>wagon-sshartifactId>  
                <version>2.8version>  
            extension>  
      
        extensions>  
      
          
        <plugins>  
            <plugin>  
                <groupId>groupId>  
                <artifactId>maven-assembly-pluginartifactId>  
                <version>2.5.5version>  
      
                  
                <executions>  
                    <execution>  
      
                          
                        <id>assemblyid>  
      
                          
                        <phase>packagephase>  
      
                          
                        <goals>  
                            <goal>singlegoal>  
                        goals>  
      
                          
                        <inherited>falseinherited>  
      
                    execution>  
                executions>  
      
                  
                <configuration>  
                    <finalName>${finalName}finalName>  
                    <appendAssemblyId>falseappendAssemblyId>  
                    <descriptor>assembly.xmldescriptor>  
                configuration>  
      
                  
                  
                <extensions>falseextensions>  
      
                  
                <dependencies>  
                    <dependency>...dependency>  
                dependencies>  
      
                  
                <inherited>trueinherited>  
      
            plugin>  
        plugins>  
      
          
          
          
        <pluginManagement>  
            <plugins>...plugins>  
        pluginManagement>  
      
    build>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152

    分发配置

    pom里面的仓库与setting.xml里的仓库功能是一样的。主要的区别在于,pom里的仓库是个性化的。比如一家大公司里的setting文件是公用的,所有项目都用一个setting文件,但各个子项目却会引用不同的第三方库,所以就需要在pom里设置自己需要的仓库地址。

      
      
    <distributionManagement>  
      
          
        <repository>  
      
              
              
            <uniqueVersion>trueuniqueVersion>  
      
            <id> repo-id id>  
            <name> repo-namename>  
            <url>file://${basedir}/target/deploy url>  
            <layout />  
      
        repository>  
      
          
        <snapshotRepository>  
            <uniqueVersion />  
            <id />  
            <name />  
            <url />  
            <layout />  
        snapshotRepository>  
      
          
        <site>  
      
              
            <id> site-id id>  
      
              
            <name> site-namename>  
      
              
            <url>scp://svn.baidu.com/banseon:/var/www/localhost/banseon-web url>  
      
        site>  
      
          
          
        <downloadUrl />  
      
          
        <relocation>  
      
              
            <groupId />  
      
              
            <artifactId />  
      
              
            <version />  
      
              
            <message />  
      
        relocation>  
      
          
          
          
        <status />  
      
    distributionManagement>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    仓库配置

      
    <repositories>  
      
          
        <repository>  
      
              
            <releases>  
      
                  
                <enabled />  
      
                  
                  
                  
                <updatePolicy />  
      
                  
                  
                <checksumPolicy />  
      
            releases>  
      
              
              
              
            <snapshots>  
                <enabled />  
                <updatePolicy />  
                <checksumPolicy />  
            snapshots>  
      
              
            <id> repo-id id>  
      
              
            <name> repo-namename>  
      
              
            <url>http://192.168.1.169:9999/repository/ url>  
      
              
              
              
              
            <layout> defaultlayout>  
      
        repository>  
      
    repositories>  
      
      
    <pluginRepositories>  
      
          
        <pluginRepository />  
      
    pluginRepositories>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59

    profile配置

      
    <profiles>  
      
          
        <profile>  
              
            <activation>  
      
                  
                <activeByDefault>falseactiveByDefault>  
      
                  
                <jdk>1.7jdk>  
      
                  
                <os>  
      
                      
                    <name>Windows XPname>  
      
                      
                    <family>Windowsfamily>  
      
                      
                    <arch>x86arch>  
      
                      
                    <version>5.1.2600version>  
      
                os>  
      
                  
                  
                <property>  
      
                      
                    <name>mavenVersionname>  
      
                      
                    <value>2.0.3value>  
      
                property>  
      
                  
                  
                <file>  
      
                      
                    <exists>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/exists>  
      
                      
                    <missing>/usr/local/hudson/hudson-home/jobs/maven-guide-zh-to-production/workspace/missing>  
      
                file>  
      
            activation>  
            <id />  
            <build />  
            <modules />  
            <repositories />  
            <pluginRepositories />  
            <dependencies />  
            <reporting />  
            <dependencyManagement />  
            <distributionManagement />  
            <properties />  
        profile>
    profiles>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    profile配置项在setting.xml中也有,是pom.xml中profile元素的裁剪版本,包含了id,activation, repositories, pluginRepositories和 properties元素。这里的profile元素只包含这五个子元素是因为setting.xml只关心构建系统这个整体(这正是settings.xml文件的角色定位),而非单独的项目对象模型设置。如果一个settings中的profile被激活,它的值会覆盖任何其它定义在POM中或者profile.xml中的带有相同id的profile。

    pom.xml中的profile可以看做pom.xml的副本,拥有与pom.xml相同的子元素与配置方法。它包含可选的activation(profile的触发器)和一系列的changes。例如test过程可能会指向不同的数据库(相对最终的deployment)或者不同的dependencies或者不同的repositories,并且是根据不同的JDK来改变的。只需要其中一个成立就可以激活profile,如果第一个条件满足了,那么后面就不会在进行匹配。

    报表配置

      
      
    <reporting>  
      
          
        <excludeDefaults />  
      
          
        <outputDirectory />  
      
          
        <plugins>  
      
            <plugin>  
                <groupId />  
                <artifactId />  
                <version />  
                <inherited />  
                <configuration>  
                    <links>  
                        <link>http://java.sun.com/j2se/1.5.0/docs/api/link>  
                    links>  
                configuration>  
                  
                  
                  
                <reportSets>  
      
                      
                    <reportSet>  
      
                          
                        <id>sunlinkid>  
      
                          
                        <configuration />  
      
                          
                        <inherited />  
      
                          
                        <reports>  
                            <report>javadocreport>  
                        reports>  
      
                    reportSet>  
      
                reportSets>  
      
            plugin>  
      
        plugins>  
      
    reporting>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    环境配置

      
    <issueManagement>  
      
          
        <system> jira system>  
      
          
        <url> http://jira.clf.com/url>  
      
    issueManagement>  
      
      
    <ciManagement>  
      
          
        <system />  
      
          
        <url />  
      
          
        <notifiers>  
      
              
            <notifier>  
      
                  
                <type />  
      
                  
                <sendOnError />  
      
                  
                <sendOnFailure />  
      
                  
                <sendOnSuccess />  
      
                  
                <sendOnWarning />  
      
                  
                <address />  
      
                  
                <configuration />  
      
            notifier>  
      
        notifiers>  
      
    ciManagement>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53

    项目信息配置

      
    <name>banseon-maven name>  
      
      
    <url>http://www.clf.com/ url>  
      
      
      
      
    <description>A maven project to study maven. description>  
      
      
    <prerequisites>  
      
          
        <maven />  
      
    prerequisites>  
      
      
    <inceptionYear />  
      
      
    <mailingLists>  
      
          
        <mailingList>  
      
              
            <name> Demo name>  
      
              
            <post> clf@126.compost>  
      
              
            <subscribe> clf@126.comsubscribe>  
      
              
            <unsubscribe> clf@126.comunsubscribe>  
      
              
            <archive> http:/hi.clf.com/archive>  
      
        mailingList>  
      
    mailingLists>  
      
      
    <developers>  
      
          
        <developer>  
      
              
            <id> HELLO WORLD id>  
      
              
            <name> banseon name>  
      
              
            <email> banseon@126.comemail>  
      
              
            <url />  
      
              
            <roles>  
                <role> Project Managerrole>  
                <role>Architect role>  
            roles>  
      
              
            <organization> demoorganization>  
      
              
            <organizationUrl>http://hi.clf.com/ organizationUrl>  
      
              
            <properties>  
                <dept> No dept>  
            properties>  
      
              
            <timezone> -5timezone>  
      
        developer>  
      
    developers>  
      
      
    <contributors>  
      
          
        <contributor>  
            <name />  
            <email />  
            <url />  
            <organization />  
            <organizationUrl />  
            <roles />  
            <timezone />  
            <properties />  
        contributor>  
      
    contributors>  
      
      
      
    <licenses>  
      
          
        <license>  
      
              
            <name> Apache 2 name>  
      
              
            <url>http://www.clf.com/LICENSE-2.0.txt url>  
      
              
            <distribution> repodistribution>  
      
              
            <comments> Abusiness-friendly OSS license comments>  
      
        license>  
      
    licenses>  
      
      
    <scm>  
      
          
        <connection>scm:svn:http://svn.baidu.com/banseon/maven/connection>  
      
          
        <developerConnection>scm:svn:http://svn.baidu.com/banseon/maven/  
        developerConnection>  
      
          
        <tag />  
      
          
        <url> http://svn.baidu.com/banseonurl>  
      
    scm>  
      
      
    <organization>  
      
          
        <name> demo name>  
      
          
        <url> http://www.clf.com/url>  
      
    organization>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130
    • 131
    • 132
    • 133
    • 134
    • 135
    • 136
    • 137
    • 138
    • 139
    • 140
    • 141
    • 142
    • 143
    • 144
    • 145
    • 146
    • 147
    • 148
    • 149
    • 150
    • 151
    • 152
    • 153
    • 154
    • 155
    • 156
    • 157
    • 158
  • 相关阅读:
    [附源码]java毕业设计网上学车预约系统
    ORB-SLAM
    某企查ymg_ssr列表详情
    Representative Routes Discovery From Massive Trajectories
    mac控制台命令小技巧
    Function 源码解析与实践
    第五章 ObjectScript 标识符的规则和指南
    GridLayout使用小记2022-08-11
    软件工程理论与实践 (吕云翔) 第三章 可行性研究及需求分析课后习题及答案
    【Linux】adduser命令使用
  • 原文地址:https://blog.csdn.net/weixin_43972437/article/details/134419151