• Maven Android使用一


     Maven的坐标包括:groupId、artifactId、version、packaging、classifier。

    groupId:定义当前maven项目隶属的实际项目;

    artifactId:定义实际项目中的一个maven项目(模块);

    version:定义当前所处的模板;

    packaging:定义maven项目的打包方式;

     

    依赖对应的元素Dependencies是dependency的负数形式,非常形象,它可以包含一个或者多个dependency。依赖也有它的一组子元素:

    groupId、artifactId、version:依赖的基本坐标;

    type:依赖的类型

    scope:依赖的范围,用来控制依赖于编译classpath、测试classpath、运行classpath的关系,有compile、test、provided、runtime、import。

    依赖是可传递的,如A->B,B->C,那么A->C。传递性依赖简化了依赖管理,但在带来好处的同时也给项目带来了很多隐性的依赖,也就是我们平时总会遇到的依赖冲突,经常需要排除依赖(exclusions)。   

    排查依赖最常用到的就是mvn dependency:tree命令,将当前项目的依赖树打出来查看。搜索发生冲突的依赖,排除其中多个依赖只留下唯一一个。

     

     类似java的继承思想,抽取重复的配置,消除重复。Parent元素声明父模块,parent下的子元素groupId、artifactId、version定位父模块坐标。 

    Maven创建的Lib项目

    <?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>

      <groupId>com.meibu</groupId>

      <artifactId>MeibuLoginActivity</artifactId>

      <version>0.0.1-SNAPSHOT</version>

      <packaging>apklib</packaging>//添加下面的build //plugins 就可以设置打包方式apk和apklib

      <name>MeibuLoginActivity</name>

     

      <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

         <platform.version>2.2.1</platform.version>

         <android.plugin.version>3.6.0</android.plugin.version>

      </properties>

     

      <dependencies>

         <dependency>

           <groupId>com.google.android</groupId>

           <artifactId>android</artifactId>

           <version>${platform.version}</version>//代表上面properties中的<platform.version>可以写成2.2.1等等

           <scope>provided</scope>

         </dependency>

         <dependency>//依赖apklib关系 其中的version是你lib中的设置的版本例如0.0.1-SNAPSHOT

           <groupId>com.meibu</groupId>

           <artifactId>MeibuBaseActivity</artifactId>

           <version>0.0.1-SNAPSHOT</version>

           <type>apklib</type>

         </dependency>

      </dependencies>

     

      <build>

         <plugins>

           <plugin>

           <groupId>com.jayway.maven.plugins.android.generation2</groupId>

             <artifactId>android-maven-plugin</artifactId>

             <version>${android.plugin.version}</version>//表示打包插件的版本号就是上面properties 中的<android.plugin.version>可以直接写里面的数字

             <extensions>true</extensions>

             <configuration>

                <sdk>

                  <platform>8</platform>

                </sdk>

             </configuration>

           </plugin>

         </plugins>

      </build>

    </project>

    创建Maven项目打包apk 依赖2个lib包,下面这个是配置文件,部分说明参考上面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/maven-v4_0_0.xsd">

      <modelVersion>4.0.0</modelVersion>

      <groupId>com.meibu</groupId>

      <artifactId>MeibuTest</artifactId>

      <version>0.0.1-SNAPSHOT</version>

      <packaging>apk</packaging>

     

      <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

         <platform.version>2.2.1</platform.version>

         <android.plugin.version>3.6.0</android.plugin.version>

      </properties>

     

      <dependencies>

         <dependency>

           <groupId>com.google.android</groupId>

           <artifactId>android</artifactId>

           <version>${platform.version}</version>

           <scope>provided</scope>

         </dependency>

         <dependency>

           <groupId>com.meibu</groupId>

           <artifactId>MeibuBaseActivity</artifactId>

           <version>0.0.1-SNAPSHOT</version>

           <type>apklib</type>

         </dependency>

         <dependency>

           <groupId>com.meibu</groupId>

           <artifactId>MeibuLoginActivity</artifactId>

           <version>0.0.1-SNAPSHOT</version>

           <type>apklib</type>

         </dependency>

      </dependencies>

     

      <build>

         <plugins>

           <plugin>

           <groupId>com.jayway.maven.plugins.android.generation2</groupId>

             <artifactId>android-maven-plugin</artifactId>

             <version>${android.plugin.version}</version>

             <extensions>true</extensions>

             <configuration>

                <sdk>

                  <platform>8</platform>

                </sdk>

             </configuration>

           </plugin>

         </plugins>

      </build>

    </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>com.meibu.bulidsource</groupId>

      <artifactId>com.meibu.bulidsource</artifactId>

      <version>0.0.1-SNAPSHOT</version>

      <packaging>pom</packaging>

      <name>oa-modules</name>

             <url>http://cserver.com.cn</url>

             <modules>

                      <module>com.meibu.preparesource</module>//表示加载的模块

                       <module>MeibuTest</module>//表示加载的模块

             </modules>

    </project>

    他们的顺序就是他们的先后依赖关系

    打包中的打包信息乱码问题 设置project.build.sourceEncoding

      <properties>

    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

         <platform.version>2.2.1</platform.version>

      <android.plugin.version>3.6.0</android.plugin.version>

      </properties>

  • 相关阅读:
    C语言使用指针表示数组的注意事项
    LUNA16数据集的百度云链接
    c语言定义指针类型需注意事项
    对DeepLung数据预处理部分的详细展示
    python统计字符串中字符个数
    C语言预处理命令之文件包含
    C语言值拷贝传递机制
    【论文】CornerNet:几点疑问
    解读 pytorch对resnet的官方实现
    python 对三维CT数据缩放
  • 原文地址:https://www.cnblogs.com/jason-star/p/3534280.html
Copyright © 2020-2023  润新知