精华内容
下载资源
问答
  • maven中把依赖的JAR包一起打包

    千次阅读 2015-08-14 15:54:15
    3.如果不希望依赖的JAR包变成CLASS的话,可以修改ASSEMBLY插件.  3.1 找到assembly在本地的地址,一般是c:/users/${your_login_name}/.m2/\org\apache\maven\plugins\maven-assembly-plugin\2.4  3.2 用...

    这里所用到的MAVEN-PLUGIN是MAVNE-ASSEMBLY-PLUGIN

    官方网站是:http://maven.apache.org/plugins/maven-assembly-plugin/usage.html

     

    1. 添加此PLUGIN到项目的POM.XML中

     

    Xml代码   收藏代码
    1. <buizld>  
    2.         <plugins>  
    3.             <plugin>  
    4.                 <artifactId>maven-assembly-plugin</artifactId>  
    5.                 <configuration>  
    6.                     <archive>  
    7.                         <manifest>  
    8.                             <mainClass>com.allen.capturewebdata.Main</mainClass>  
    9.                         </manifest>  
    10.                     </archive>  
    11.                     <descriptorRefs>  
    12.                         <descriptorRef>jar-with-dependencies</descriptorRef>  
    13.                     </descriptorRefs>  
    14.                 </configuration>  
    15.             </plugin>  
    16.         </plugins>  
    17.     </build>  

     

     

    如果出现CLASS重名的情况,这时候就要把最新的版本号添加进去即可,

     

    2, 在当前项目下执行mvn assembly:assembly, 执行成功后会在target文件夹下多出一个以-jar-with-dependencies结尾的JAR包. 这个JAR包就包含了项目所依赖的所有JAR的CLASS.

     

    3.如果不希望依赖的JAR包变成CLASS的话,可以修改ASSEMBLY插件.

      3.1 找到assembly在本地的地址,一般是c:/users/${your_login_name}/.m2/\org\apache\maven\plugins\maven-assembly-plugin\2.4

      3.2 用WINZIP或解压工具打开此目录下的maven-assembly-plugin-2.4.jar, 找到assemblies\jar-with-dependencies.xml

       3.3 把里面的UNPACK改成FALSE即可

    展开全文
  • mavenjar包制作成maven依赖

    千次阅读 2019-06-21 10:30:22
    最近在项目中用到第三方的jar包,需要第三方jar包制作成依赖导入到maven项目中,现在maven命令记录一下: 首先进入到cmd中,然后mvn -v命令查看maven环境是否已经配置好,没有配置好的需要重新配置maven环境。 ...

    最近在项目中用到第三方的jar包,需要把第三方jar包制作成依赖导入到maven项目中,现在把maven命令记录一下:

    首先进入到cmd中,然后mvn -v命令查看maven环境是否已经配置好,没有配置好的需要重新配置maven环境。

    Microsoft Windows [版本 10.0.17134.706]
    (c) 2018 Microsoft Corporation。保留所有权利。
    
    C:\Users\hspcadmin>mvn -v
    Apache Maven 3.6.0 (97c98ec64a1fdfee7767ce5ffb20918da4f719f3; 2018-10-25T02:41:47+08:00)
    Maven home: D:\apache-maven-3.6.0\bin\..
    Java version: 1.8.0_201, vendor: Oracle Corporation, runtime: C:\Program Files\Java\jdk1.8.0_201\jre
    Default locale: zh_CN, platform encoding: GBK
    OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"
    
    C:\Users\hspcadmin>
    

    配置好环境之后,需要进入jar包所在目录(我当前jar包的F盘)),我自己打包腾讯ocr-sdk-4.0

    然后就是通过maven命令把jar包制作成依赖。

    -DgroupId :grouId名称

    -DartifactId:artifactId名称

    -Dversion:版本号

    <dependency>
    			<groupId>com.XXX</groupId>
    			<artifactId>XXX.sdk.java</artifactId>
    			<version>XXXXX</version>
    		</dependency>

    命令:mvn install:install-file -DgroupId=com.tencent-ocr -DartifactId=tencent-ocr-sdk -Dversion=2.4.0 -Dpackaging=jar -Dfile=qcloud-sdk-2.4.0-jar-with-dependencies.jar

    Microsoft Windows [版本 10.0.17134.706]
    (c) 2018 Microsoft Corporation。保留所有权利。
    
    C:\Users\hspcadmin>f:
    
    F:\>mvn install:install-file -DgroupId=com.tencent-ocr -DartifactId=tencent-ocr-sdk -Dversion=2.4.0 -Dpackaging=jar -Dfile=qcloud-sdk-2.4.0-jar-with-dependencies.jar
    F:\
    [INFO] Scanning for projects...
    [INFO]
    [INFO] ------------------< org.apache.maven:standalone-pom >-------------------
    [INFO] Building Maven Stub Project (No POM) 1
    [INFO] --------------------------------[ pom ]---------------------------------
    [INFO]
    [INFO] --- maven-install-plugin:2.4:install-file (default-cli) @ standalone-pom ---
    [INFO] Installing F:\qcloud-sdk-2.4.0-jar-with-dependencies.jar to F:\repository\com\tencent-ocr\tencent-ocr-sdk\2.4.0\tencent-ocr-sdk-2.4.0.jar
    [INFO] Installing C:\Users\HSPCAD~1\AppData\Local\Temp\mvninstall7352011714146735885.pom to F:\repository\com\tencent-ocr\tencent-ocr-sdk\2.4.0\tencent-ocr-sdk-2.4.0.pom
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD SUCCESS
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time:  0.788 s
    [INFO] Finished at: 2019-06-21T10:10:42+08:00
    [INFO] ------------------------------------------------------------------------
    
    F:\>
    

     

    展开全文
  • 例如, 当前一个项目有一个第三方依赖, 而这个第三方依赖由于某些原因依赖了另一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目。这时候就需要...

    排除依赖

    传递性依赖会给项目隐式地引入很多依赖, 这极大地简化了项目依赖的管理, 但是有些时候这种特性也会带来问题。例如, 当前一个项目有一个第三方依赖, 而这个第三方依赖由于某些原因依赖了另一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目。这时候就需要排除掉该SNAPSHOT, 并且在当前项目中声明该类库的某个正式发布的版本。 还有一些情况,你可能也想要替换某个传递性依赖,比如 Sun JTA API, Hibernate 依赖于这个JAR, 但是由于版权的因素,该类库不在中央仓库中,而Apache Geronimo 项目有一个对应的实现。这时就可排除Sun JTA API, 再声明Geronimo的JTA API实现, 如下:

    <dependencies>
       <dependency>
          <groupId>com.rogueq.mvnbook</groupId>
          <artifactId>project-b</artifactId>
          <version>1.0.0</version>
          <exclusions>
             <exclusion>
                <groupId>com.rogueq.mvnbook</groupId>
                <artifactId>project-c</artifactId>
             </exclusion>
          </exclusions>
       </dependency>
       <dependency>
          <groupId>com.rogueq.mvnbook</groupId>
          <artifactId>project-c</artifactId>
          <version>1.0.0</version>
       </dependency>
    </dependencies>

    上述项目中,项目依赖项目B,但是由于一些原因,不想引入传递性依赖C, 而是想自己显示地声明对于项目C1.0.0版本的依赖。代码中使用exclusions元素声明排除依赖,exclusions可以包含一个或者多个exclusion元素,因此可以排除一个或者多个传递性依赖。需要注意的是,声明exclusion的时候只需要声明groupId和artifactId, 而不需要version元素,这是因为只需要groupId和artifactId就能唯一定位依赖图中的某个依赖。换句话说,Maven解析后的依赖中,不可能出现groupId和artifactId相同,但是version不同的两个依赖。

     

    归类依赖

    在Java开发中,竟然需要导入很多关于Spring Framework的依赖,而这些依赖的版本往往都是相同的,此时可以如下声明,统一依赖版本:

    <properties>
       <springframework.version>2.5.6</springframework.version>
    </properties>
    <dependencies>
       <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${springframework.version}</version>
       </dependency>
       <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>${springframework.version}</version>
       </dependency>
       <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${springframework.version}</version>
       </dependency>
       <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${springframework.version}</version>
       </dependency>
    </dependencies>

    通过使用properties元素定义Maven属性,该例中定义了springframework.version子元素,其值为2.5.6。 有了这个属性定义之后,Maven运行的时候会将POM中所有的${springframework.version}替换成实际值2.5.6。也就是说, 可以使用美元符号和大括弧环绕的方式引用Maven属性。

     

    优化依赖

    运行如下命令查看当前项目的已解析依赖:

    maven dependency:list 

    运行如下项目查看当前项目的依赖树:

    mvn dependency:tree

    运行如下命令可以帮助分析当前项目的依赖:

    mvn dependency:analyze

    注意: dependency:analyze只会分析编译主代码和测试代码需要的依赖, 一直执行测试和运行时需要的依赖就发现不了。

    注: 摘取自《Maven实战》

    展开全文
  • 例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另一个类库的SNAPSHOT版本,name这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目。这时就需要排除掉该...

    排除依赖

    传递性依赖会给项目隐式地引入很多依赖,着极大简化了项目依赖的管理,但是有些时候这种特性也会带来问题。例如,当前项目有一个第三方依赖,而这个第三方依赖由于某些原因依赖了另一个类库的SNAPSHOT版本,那么这个SNAPSHOT就会成为当前项目的传递性依赖,而SNAPSHOT的不稳定性会直接影响到当前的项目。这时就需要排除掉该SNAPSHOT,并且在当前项目中声明该类库的某个正式发布的版本。还有一些情况,你可能也想要替换掉某个传递性依赖,比如Sun JTA API,Hibernate依赖与这个JAR,但是由于版权的因素,该类库不在中央仓库中,而Apache Geronimo项目有一个对应的实现。这时你就可以排除Sun JAT API,而声明Geronimo的JTA API实现。

    <project>
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.cc.maven</groupId>
      <artifactId>project-a</artifactId>
      <version>1.0.0</version>
      <packaging>jar</packaging>
    
    
      <dependencies>
        <dependency>
          <groupId>com.cc.maven</groupId>
          <artifactId>project-b</artifactId>
          <version>1.0.0</version>
          <exclusions>
                <exclusion>
                 <groupId>com.cc.maven</groupId>
                  <artifactId>project-c</artifactId>
                </exclusion>
        </exclusions>
        </dependency>
    
        <dependency>
          <groupId>com.cc.maven</groupId>
          <artifactId>project-b</artifactId>
          <version>1.1.0</version>
        </dependency>
    
      </dependencies>
    </project>

    上述代码中,项目A依赖于项目B,但是由于一些原因,不想引入传递性依赖C,而是自己显式声明对项目C 1.1.0版本的依赖。代码中使用exclusions元素声明排除依赖,exclusions可以包含一个或者多个exclusion子元素,因此可以排除一个或者多个传递性依赖。需要注意的是,声明exclusion的时候只需要groupId和artifactId,而不需要version元素,这是因为只需要groupId和artifactId就能唯一定位依赖图中的某个依赖。换句话说,maven解析后的依赖中,不可能出现groupId和artifactId项目,但是version不同的两个依赖。该例的依赖解析逻辑如下所示:
    这里写图片描述

    归类依赖

    关于Spring Framework的依赖有很多,他们来自同一个项目的不同模块。因此所有这些依赖的版本都是相同的,可以知道,如果将来想要升级Spring Framework的话,这些依赖版本也会一起升级。这一情况在java中也似曾相识,考虑代码如下:

    public double c(double r){
        return 2 * 3.14 * r;
    }
    
    public double s(double r){
        return 3.14 * r * r;
    }

    这两个简单的方程式计算圆的周长和面积,有经验的程序员一眼就能看出问题,使用字面量3.14显然不合适,应该定义一个常量并在方法中使用,如下:

    public final double PI = 3.14;
    
    public double c(double r){
        return 2 * PI * r;
    }
    
    public double s(double r){
        return PI * r * r;
    }

    使用常量不仅可以使代码变得更加简洁,更重要的是可以避免重复,只需要更改一处,降低了错误的概率。
    使用maven属性归类依赖:

    <project>
      <modelVersion>4.0.0</modelVersion>
    
      <groupId>com.juven.mvnbook.account</groupId>
      <artifactId>account-email</artifactId>
      <version>1.0.0-SNAPSHOT</version>
      <name>Account Email</name>
    
    
      <properties>
         <springframework.version>2.5.6</springframework.version>
      </properties>
    
      <dependencies>
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
          <version>${springframework.version}</version>
        </dependency>
    
         <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${springframework.version}</version>
        </dependency>
    
         <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
          <version>${springframework.version}</version>
        </dependency>
      </dependencies>
    </project>

    这里简单使用到了Maven的属性,首先使用properties元素定义了Maven的属性,该例子中定义了一个springframework.version子元素,其值为2.5.6,有了这个属性之后,Maven运行的时候,会将POM中所有${springframework.version}替换成2.5.6,也就是说,可以使用${}的方式来引用Maven的属性,然后将所有Spring Framework依赖的版本值用这一属性引用。这个和在java中常量PI替换3.14是同样的道理,只是语法不同而已。

    优化依赖

    在软件开发的过程中,程序员会通过重构等方式不断地优化自己的代码,使其变得更简洁、更灵活。同理,程序员也应该能够对maven项目的依赖了然于胸,并对其优化,如去除多余的依赖,显式声明某些必要的依赖。
    maven会自动解析所有项目的直接依赖和传递性依赖,并且根据规则正确判断每个依赖的范围。对于一些依赖冲突,也能进行调解,以确保任何一个构件只能唯一的版本在依赖中存在。在这些工作之后,最后得到的那些依赖被称为已解析依赖。
    可以通过运行如下命令查看当前项目的已解析依赖:mvn dependency:list
    这里写图片描述
    将直接在当前POM声明的依赖定义为顶层依赖,而这些顶层依赖的依赖则定义为第二层依赖,以此类推,有第三、第四层依赖。当这些依赖经过Maven解析之后,就会构成一个依赖树,通过这颗依赖树,就能够很清楚地看到某个依赖是通过哪条路径引入的。可以运行如下命令查看当前项目的依赖树:mvn dependency:tree
    这里写图片描述

    使用mvn dependency:listmvn dependency:tree可以帮助我们详细了解项目中所有的依赖的具体详细,在此基础上,还有mvn dependency:analyze工具可以帮助分析当前项目的依赖
    这里写图片描述

    展开全文
  • 前言:网上有很多资料。本文只是针对自己的理解和实践的记录。...创建一个正常的项目,你想要的功能(最好是能复用的功能)写上,可删除项目本身的activity和布局文件。找到项目的build.gradle ...
  • 最小函数依赖

    2015-05-05 15:13:35
     ① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖,得F为:F={AB→C,D→E,D→G,C→A,BE→C,BC→D,CG→B,CG→D,ACD→B,CE→A,CE→G}  ② 去掉F中多余的函数依赖  A.设AB→C为冗余的函数依赖...
  • 标准web工程在eclipse中利用m2eclipse插件添加依赖管理后,在部署过程中没有将依赖的jar包自动拷贝到/WEB-INF/lib中。 参考了一些朋友的做法手动执行 mvn dependency:copy-dependencies -...
  • AngularJS 依赖注入

    2020-12-13 19:32:59
    wiki 上的解释是:依赖注入(Dependency Injection,简称DI)是一种软件设计模式,在这种模式下,一个或更多的依赖(或服务)被注入(或者通过引用传递)到一个独立的对象(或客户端)中,然后成为了该客户端状态的...
  • 路径依赖

    千次阅读 2017-11-05 22:45:37
    百度百科关于路径依赖的解释是:路径依赖(Path-Dependence),又译为路径依赖性,它的特定含义是指人类社会中的技术演进或制度变迁均有类似于物理学中的惯性,即一旦进入某一路径(无论是“好”还是“坏”)就可能...
  • 依赖倒置原则

    万次阅读 2018-05-18 12:55:29
    1,高层模块不应该依赖底层模块,两个都应该依赖抽象 2,抽象不应该依赖细节,细节应该依赖抽象 二,问题和解决方案 问题由来: 类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。...
  • 函数依赖、多值依赖

    千次阅读 2019-03-13 09:49:12
    一、函数依赖(Functional Dependency)的概念 函数依赖是数据依赖的一种,它反映属性或属性组之间相依存,互相制约的关系,即反映现实世界的约束关系。 设R(U)是属性U上的一个关系模式,X和Y均为U={A1,A2,…,...
  • 依赖依赖+stage划分

    千次阅读 2018-03-06 22:22:55
    1.RDD的依赖关系1.1 WordCount中的RDDRDD和它依赖的父RDD(s)的关系有两种不同的类型,即窄依赖(narrow dependency)和宽依赖(wide dependency)。1.2 窄依赖依赖指的是每一个父RDD的Partition最多被子RDD的...
  • 依赖倒置、控制反转和依赖注入辨析 ...在《道法自然——面向对象实践指南》一书中,我们采用了一个对立统一的辩证关系来说明“模板方法”模式—— “正向依赖 vs....这种“好莱坞”原则和 “依赖倒置”原
  • [函数依赖]极小覆盖举例依赖

    千次阅读 2018-03-14 14:24:28
    求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合 数据库:求F={A→B,B→A,B→C,A→C,C→A},最小(极小)函数依赖集合 要解答此问题我们先来了解一下概念: 如果函数依赖集F满足以下条件,则称F为一个极...
  • 依赖倒转原则

    万次阅读 多人点赞 2014-07-21 13:11:20
    依赖倒转原则 依赖:  DIP(DependenceInversion Principal),再说这个原则之前,我们先说说什么是依赖吧。这里的依赖关系我们理解为UML关系中的依赖。简单的说就是A use a B,那么A对B产生了依赖。具体请看下面的...
  • Spring如何解决循环依赖问题

    万次阅读 多人点赞 2020-12-09 02:23:10
    1、什么是循环依赖:类与类之间的依赖关系形成了闭环,就会导致循环依赖问题的产生。 2、循环依赖问题在Spring中主要有三种情况: (1)通过构造方法进行依赖注入时产生的循环依赖问题。 (2)通过setter方法进行...
  • 什么是循环依赖 最近学习了一下spring的循环依赖问题,这里总结一下。首先,我们应该知道什么是spring的依赖问题,想要明白这个问题,我们就要先明白spring的创建bean的过程。这里我简单说一下,spring在启动的时候会...
  • 数据库基础1—函数依赖 多值依赖

    万次阅读 2014-09-16 13:47:53
    在数据库知识中有讲到数据库的函数依赖
  • Spark RDD 特征及其依赖

    2018-09-23 15:12:43
    1 RDD特征 分区(partition) 有一个数据分片列表,能够将数据进行切分,切分后...计算每个RDD对父RDD的依赖列表,源RDD没有依赖,通过依赖关系描述血统(lineage) 优先位置(可选) 每一个分片的优先计算位置(pr...
  • android之多层module依赖改成依赖aar

    万次阅读 2016-11-03 16:52:02
    这里只谈aar多层依赖关系!!实用性与复杂性留给读者自行判断。毕竟人无完人,方案也不是全都完美无缺的嘛 1、背景  由于公司有两个项目组,想将这两个项目组的某些功能模块相互使用,比如A项目组要使用B项目组的...
  • 数据库之函数依赖、多值依赖

    万次阅读 2019-04-30 19:31:57
    一、函数依赖(Functional Dependency)的概念 函数依赖是数据依赖的一种,它反映属性或属性组之间依存,互相制约的关系,即反应现实世界的约束关系。 设R(U)是属性U上的一个关系模式,X和Y均为U={A1 , A2 , . ....
  • maven打包成第三方jar包且pom依赖包打入进来 &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; &lt;artifactId&gt;maven-assembly-plugin&lt;/artifactId&gt;.....
  • Spring之依赖注入

    万次阅读 2018-01-10 11:49:42
    Spring框架的核心功能之一就是通过依赖注入的方式来管理Bean之间的依赖关系。那么我们今天的主角依赖注入到底有什么神奇之处呢?请往下继续看。...而工厂模式,则责任转向了工厂,形成调用者与被调用者
  • 绑定不是依赖属性

    2021-04-04 02:00:58
    这个简单的技巧使绑定的gremlins停止在它们的轨道上,因为只有依赖项属性可以成为它们的目标。
  • 多值依赖与部分函数依赖

    千次阅读 2014-02-03 21:59:59
    多值依赖的定义:  设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r,r在(X,Z)上的每个值对应一组Y的值,这组...可以看出,如果上面的一组改

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 766,105
精华内容 306,442
关键字:

把依赖变成