精华内容
下载资源
问答
  • maven插件依赖 问题: 我们进行了一个集成测试,该测试创建了一个Spring ClassPathXmlApplicationContext ,同时这样做导致NoSuchMethodError爆炸。 事实证明,我们对Spring构件的依赖版本存在冲突。 这本身不是一...

    maven插件依赖

    问题:

    我们进行了一个集成测试,该测试创建了一个Spring ClassPathXmlApplicationContext ,同时这样做导致NoSuchMethodError爆炸。 事实证明,我们对Spring构件的依赖版本存在冲突。 这本身不是一个不寻常的问题-使用Maven依赖插件使用verbose选项解决了这些问题。 但是,当Maven插件错误时,您该怎么办?

    调查:

    我们开始深入研究,发现AbstractAutowireCapableBeanFactorygetTypeForFactoryMethod方法尝试访问GenericTypeResolver resolveReturnTypeForGeneric方法,并在java.lang.NoSuchMethodError: org.springframework.core.GenericTypeResolver.resolveReturnTypeForGenericMethod(Ljava/lang/reflect/Method;

    初步调查和谷歌搜索发现,该方法是在3.2.0中添加的,而我们应该在3.1.1中运行。 进一步的调查确定spring-data-mongodb依赖于范围[3.0.7-4) 1的 spring框架,并且由于maven在给定范围2的情况下采用了最新的可用版本,因此它尝试采用3.2.2。
    注意,在显式版本依赖项和范围依赖项之间存在冲突的情况下,上述更改有所变化,但是IINM在确定spring mongo的依赖项时没有冲突。

    该问题被两个症状进一步掩盖了:

    1. 我们还有其他使用这种模式的项目,没有问题-这可以通过以下事实来解释:maven的冲突解决机制选择默认情况下找到的最近版本3 ,因为所有其他需要spring-data-mongodb的项目都依赖于这个项目他们很幸运地抢到了3.1.1版本而不是3.2.2
    2. dependency:tree显示它带来了3.1.1,而带来了3.2.2-因为堆栈跟踪显示了其他结果,所以我编写了一个测试,检查上述每个类来自哪个jar,并验证了AbstractAutowireCapableBeanFactory类确实来自spring-beans 3.2.2而不是3.1.1,如“ mvndependency:tree”所示(非常感谢http://bit.ly/10zD1iV提供了在运行时查找类的jar的代码段)。

    Maven依赖项:在构件中使用显示spring-beans:3.1.1的树输出

    &gt:mvn dependency:tree -Dverbose -Dincludes=org.springframework
    ...
    (omitted for clarity)
    ...
    [INFO] --- maven-dependency-plugin:2.1:tree (default-cli) @ wix-feature-toggle-administration ---
    [INFO] artifact org.springframework:spring-beans: checking for updates from central
    [INFO] artifact org.springframework:spring-beans: checking for updates from snapshots
    [INFO] artifact org.springframework:spring-expression: checking for updates from central
    [INFO] artifact org.springframework:spring-expression: checking for updates from snapshots
    [INFO] artifact org.springframework:spring-tx: checking for updates from central
    [INFO] artifact org.springframework:spring-tx: checking for updates from snapshots
    [INFO] com.wixpress.common:wix-feature-toggle-administration:jar:2.180.0-SNAPSHOT
    ...
    [INFO] +- org.springframework.data:spring-data-mongodb:jar:1.0.1.RELEASE:compile
    [INFO] |  +- org.springframework:spring-beans:jar:3.1.1.RELEASE:compile
    [INFO] |  |  \- (org.springframework:spring-core:jar:3.2.2.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE)
    [INFO] |  +- org.springframework:spring-expression:jar:3.1.1.RELEASE:compile
    [INFO] |  |  \- (org.springframework:spring-core:jar:3.2.2.RELEASE:compile - omitted for conflict with 3.1.1.RELEASE)
    [INFO] |  \- org.springframework.data:spring-data-commons-core:jar:1.2.1.RELEASE:compile
    [INFO] |     +- (org.springframework:spring-beans:jar:3.1.1.RELEASE:compile - omitted for duplicate)
    [INFO] |     \- (org.springframework:spring-tx:jar:3.1.1.RELEASE:compile - omitted for duplicate)
    [INFO] +- com.wixpress.common:wix-framework:jar:2.180.0-SNAPSHOT:compile
    [INFO] |  +- org.springframework:spring-core:jar:3.1.1.RELEASE:compile
    [INFO] |  |  \- org.springframework:spring-asm:jar:3.1.1.RELEASE:compile
    ...
    I've removed additional outputs for clarity. The additional outputs were all 3.1.1 and were further down the tree (so irrelevant due to maven conflict resolving mechanism)

    工件中使用了证明spring-beans:3.2.2的测试(断言错误中的jvm在说什么)

    package com.wixpress.springVersionBug;
    
    
    import org.junit.*;
    import org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory;
    import org.springframework.core.GenericTypeResolver;
    import java.security.CodeSource;
    import static org.hamcrest.Matchers.endsWith;
    
    /**
     * @author ittaiz
     * @since 3/24/13
     */
    
    public class SpringVersionTest {
    
    
        @Test
        public void verifySpringBeans311InClasspath(){
            verifyCorrectSpringVersionInClasspathFor(AbstractAutowireCapableBeanFactory.class,"spring-beans-3.1.1.RELEASE.jar");
        }
        @Test
        public void verifySpringCore311InClasspath(){
            verifyCorrectSpringVersionInClasspathFor(GenericTypeResolver.class,"spring-core-3.1.1.RELEASE.jar");
        }
        public void verifyCorrectSpringVersionInClasspathFor(Class springClass,String expectedJarFileName){
            CodeSource springClassCodeSource = springClass.getProtectionDomain().getCodeSource();
            Assert.assertNotNull("expecting "+expectedJarFileName+" to be loaded by non-system class loader",springClassCodeSource);
            Assert.assertThat(springClassCodeSource.getLocation().toString(),endsWith(expectedJarFileName));
        }
    }

    spring-beans成为3.2.2时, spring-core工件出现在3.1.1中的原因是我们的框架显式依赖于spring-core而该工件显式依赖于框架。 这意味着来自框架的spring-core 3.1.1是2跳,比来自spring-data-mongodb的3.2.2短。

    解:

    依赖spring-data-mongodb而像这样排除spring-beans

    <dependency>
      <groupId>org.springframework.data</groupId>
      <artifactId>spring-data-mongodb</artifactId>
      <version>1.0.1.RELEASE</version>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    开放问号:

    为什么dependency:tree(在详细模式下)没有显示在3.2.2中而是在3.1.1中显示了spring-beans,同时明确指定由于冲突而删除了spring-core 3.2.2? 我将此归结为依赖项插件中的错误。

    1. http://repo1.maven.org/maven2/org/springframework/data/spring-data-mongodb-parent/1.0.1.RELEASE/spring-data-mongodb-parent-1.0.1.RELEASE.pom
    2. http://www.maestrodev.com/better-builds-with-maven/creating-applications-with-maven/resolving-dependency-conflicts-and-using-version-ranges/
    3. http://www.maestrodev.com/better-builds-with-maven/creating-applications-with-maven/resolving-dependency-conflicts-and-using-version-ranges/

    参考: Wix IO博客上的Maven依赖插件来自我们的JCG合作伙伴 Yoav Abrahami时。

    翻译自: https://www.javacodegeeks.com/2013/04/when-maven-dependency-plugin-lies.html

    maven插件依赖

    展开全文
  • spring-boot-starter-parent这个POM比较好用,里面包含大部分常用的开发所需的jar包。 今天我在此基础上配置自己额外的jar包,使子工程便于依赖 POM父工程(例) &amp;lt;?xml version=&quot;1.0&quot;...

    spring-boot-starter-parent这个POM比较好用,里面包含大部分常用的开发所需的jar包。
    今天我在此基础上配置自己额外的jar包,使子工程便于依赖

    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/xsd/maven-4.0.0.xsd">
    	<modelVersion>4.0.0</modelVersion>
    	<groupId>com.lee</groupId>
    	<artifactId>junli_parent</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>pom</packaging>
    	<!-- <name>基础依赖版本管理</name> -->
    	<!-- <url>http://maven.apache.org</url> -->
    
    	<!-- 引入SpringBoot父类依赖 -->
    	<parent>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-parent</artifactId>
    		<version>2.0.5.RELEASE</version>
    		<relativePath />
    		<!-- lookup parent from repository -->
    	</parent>
    	<properties>
    		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    		<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    		<java.version>1.8</java.version>
    		<mybatis-generator.version>1.3.7</mybatis-generator.version>
    		<mysql.version>5.1.13</mysql.version>
    		<oracle.version>12.2.0.1</oracle.version>
    		<mybatis.version>3.2.4</mybatis.version>
    		<org.apache.poi.version>3.15</org.apache.poi.version>
    		<apache-httpclient.version>3.1</apache-httpclient.version>
    		<zookeeper.version>3.4.13</zookeeper.version>
    		<zkclient.version>0.10</zkclient.version>
    		<jedis.version>2.9.2</jedis.version>
    		<dubbo.version>2.5.9</dubbo.version>
    		<activemq-all.version>5.9.1</activemq-all.version>
    		<solr.version>7.5.0</solr.version>
    		<javax.el-api.version>3.0.0</javax.el-api.version>
    		<fastjson.version>1.2.9</fastjson.version>
    		<druid.version>1.1.9</druid.version>
    		<ikanalyzer.version>2012_u6</ikanalyzer.version>
    		<jsch.version>0.1.54</jsch.version>
    		<commons-io.version>2.4</commons-io.version>
    		<ik-analyzer-solr7.version>7.x</ik-analyzer-solr7.version>
    		<mybatis-spring-boot-starter.version>1.3.0</mybatis-spring-boot-starter.version>
    		<aopalliance.version>1.0</aopalliance.version>
    		<org.apache.commons.codec.version>1.8</org.apache.commons.codec.version>
    		<commons-fileupload.version>1.3.3</commons-fileupload.version>
    		<jxl.version>2.6.10</jxl.version>
    		<sigar.version>1.6.4</sigar.version>
    		<json-lib.version>2.4</json-lib.version>
    		<xom.version>1.2.5</xom.version>
    		<pagehelper-version>5.1.7</pagehelper-version>
    	</properties>
    
    	<dependencyManagement>
    		<dependencies>
    			<!-- pagehelper分页插件 -->
    			<dependency>
    				<groupId>com.github.pagehelper</groupId>
    				<artifactId>pagehelper</artifactId>
    				<version>${pagehelper-version}</version>
    			</dependency>
    
    			<!-- EL表达式 -->
    			<dependency>
    				<groupId>javax.el</groupId>
    				<artifactId>javax.el-api</artifactId>
    				<version>${javax.el-api.version}</version>
    			</dependency>
    
    			<!-- ikanalyzer中文分词器 -->
    			<dependency>
    				<groupId>com.janeluo</groupId>
    				<artifactId>ikanalyzer</artifactId>
    				<version>${ikanalyzer.version}</version>
    			</dependency>
    			<!-- ikanalyzer中文分词器对solr7版本的支持 -->
    			<dependency>
    				<groupId>com.github.magese</groupId>
    				<artifactId>ik-analyzer-solr7</artifactId>
    				<version>${ik-analyzer-solr7.version}</version>
    			</dependency>
    			<!--   导入solrJ依赖 -->
    			<dependency>
    				<groupId>org.apache.solr</groupId>
    				<artifactId>solr-solrj</artifactId>
    				<version>${solr.version}</version>
    			</dependency>
    
    			<!-- ActiveMQ支持 -->
    			<dependency>
    				<groupId>org.apache.activemq</groupId>
    				<artifactId>activemq-all</artifactId>
    				<version>${activemq-all.version}</version>
    			</dependency>
    
    			<!-- dubbo服务 -->
    			<dependency>
    				<groupId>com.alibaba</groupId>
    				<artifactId>dubbo</artifactId>
    				<version>${dubbo.version}</version>
    				<!-- <exclusions> -->
    				<!-- <exclusion> -->
    				<!-- <artifactId>spring</artifactId> -->
    				<!-- <groupId>org.springframework</groupId> -->
    				<!-- </exclusion> -->
    				<!-- </exclusions> -->
    			</dependency>
    			<!-- jedis工具包 -->
    			<dependency>
    				<groupId>com.github.sazzad16</groupId>
    				<artifactId>jedis</artifactId>
    				<version>${jedis.version}</version>
    			</dependency>
    
    			<!-- springboot安全认证模块 -->
    			<!-- <dependency> -->
    			<!-- <groupId>org.springframework.boot</groupId> -->
    			<!-- <artifactId>spring-boot-starter-security</artifactId> -->
    			<!-- </dependency> -->
    			<!-- springboot集成mybatis -->
    			<dependency>
    				<groupId>org.mybatis.spring.boot</groupId>
    				<artifactId>mybatis-spring-boot-starter</artifactId>
    				<version>${mybatis-spring-boot-starter.version}</version>
    			</dependency>
    			<!-- 阿里Druid连接池 -->
    			<dependency>
    				<groupId>com.alibaba</groupId>
    				<artifactId>druid</artifactId>
    				<version>${druid.version}</version>
    			</dependency>
    			<!-- zookeeper套件 -->
    			<dependency>
    				<groupId>org.apache.zookeeper</groupId>
    				<artifactId>zookeeper</artifactId>
    				<version>${zookeeper.version}</version>
    				<!-- <exclusions> -->
    				<!-- <exclusion> -->
    				<!-- <groupId>org.slf4j</groupId> -->
    				<!-- <artifactId>slf4j-log4j12</artifactId> -->
    				<!-- </exclusion> -->
    				<!-- <exclusion> -->
    				<!-- <groupId>log4j</groupId> -->
    				<!-- <artifactId>log4j</artifactId> -->
    				<!-- </exclusion> -->
    				<!-- </exclusions> -->
    			</dependency>
    			<dependency>
    				<groupId>com.101tec</groupId>
    				<artifactId>zkclient</artifactId>
    				<version>${zkclient.version}</version>
    				<!-- <exclusions> -->
    				<!-- <exclusion> -->
    				<!-- <groupId>org.slf4j</groupId> -->
    				<!-- <artifactId>slf4j-log4j12</artifactId> -->
    				<!-- </exclusion> -->
    				<!-- <exclusion> -->
    				<!-- <groupId>log4j</groupId> -->
    				<!-- <artifactId>log4j</artifactId> -->
    				<!-- </exclusion> -->
    				<!-- </exclusions> -->
    			</dependency>
    
    			<!-- 阿里JSON工具 -->
    			<dependency>
    				<groupId>com.alibaba</groupId>
    				<artifactId>fastjson</artifactId>
    				<version>${fastjson.version}</version>
    			</dependency>
    			<!-- base64工具包 -->
    			<dependency>
    				<groupId>org.apache.directory.studio</groupId>
    				<artifactId>org.apache.commons.codec</artifactId>
    				<version>${org.apache.commons.codec.version}</version>
    			</dependency>
    			<!-- google.guava工具包 -->
    			<!-- <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> 
    				<version>r07</version> </dependency> -->
    
    
    			<!-- Spring 4.3.3 -->
    			<!-- Core Container 核心容器 -->
    			<!-- 核心工具类,Spring其它模块大量使用Spring-core -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-test</artifactId>
    				<version>4.3.3.RELEASE</version>
    				<scope>test</scope>
    			</dependency>
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-core</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 运行时Spring容器 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-context</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- Spring容器对第三方包的集成 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-context-support</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- Spring定义Bean的支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-beans</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 使用表达式语言在运行时查询和操作对象 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-expression</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- End Core Container 核心容器 -->
    
    			<!-- AOP -->
    			<!-- 基于代理的AOP支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-aop</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 基于AspectJ的AOP支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-aspects</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    
    			<!-- 处理事务和AOP所需的包 -->
    			<dependency>
    				<groupId>aopalliance</groupId>
    				<artifactId>aopalliance</artifactId>
    				<version>${aopalliance.version}</version>
    			</dependency>
    
    			<!-- web -->
    			<!-- 提供基础的web集成的功能,在web项目中提供Spring容器 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-web</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 提供基于Servlet的SpringMVC -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-webmvc</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 提供WebSocket功能 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-websocket</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 提供Portlet环境支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-webmvc-portlet</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- End web -->
    
    			<!-- DataAccess/Integration 数据访问/集成 -->
    			<!-- 提供以JDBC访问数据库的支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-jdbc</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 提供编程式和声明式的事务支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-tx</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 提供对 对象/关系映射技术的支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-orm</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- 提供对JMS的支持 -->
    			<dependency>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring-jms</artifactId>
    				<version>4.3.3.RELEASE</version>
    			</dependency>
    			<!-- End DataAccess/Integration 数据访问/集成 -->
    
    
    			<!-- 文件上传管理 -->
    			<dependency>
    				<groupId>commons-io</groupId>
    				<artifactId>commons-io</artifactId>
    				<version>${commons-io.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>commons-fileupload</groupId>
    				<artifactId>commons-fileupload</artifactId>
    				<version>${commons-fileupload.version}</version>
    				<!-- <exclusions> -->
    				<!-- <exclusion> -->
    				<!-- <groupId>commons-io</groupId> -->
    				<!-- <artifactId>commons-io</artifactId> -->
    				<!-- </exclusion> -->
    				<!-- </exclusions> -->
    			</dependency>
    			<!-- 引入poi,解析workbook视图 -->
    			<dependency>
    				<groupId>org.apache.poi</groupId>
    				<artifactId>poi-examples</artifactId>
    				<version>${org.apache.poi.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>org.apache.poi</groupId>
    				<artifactId>poi-scratchpad</artifactId>
    				<version>${org.apache.poi.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>org.apache.poi</groupId>
    				<artifactId>poi-excelant</artifactId>
    				<version>${org.apache.poi.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>org.apache.poi</groupId>
    				<artifactId>poi-ooxml-schemas</artifactId>
    				<version>${org.apache.poi.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>org.apache.poi</groupId>
    				<artifactId>poi-ooxml</artifactId>
    				<version>${org.apache.poi.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>org.apache.poi</groupId>
    				<artifactId>poi</artifactId>
    				<version>${org.apache.poi.version}</version>
    			</dependency>
    			<!-- 处理excel和上面功能是一样的 -->
    			<dependency>
    				<groupId>net.sourceforge.jexcelapi</groupId>
    				<artifactId>jxl</artifactId>
    				<version>${jxl.version}</version>
    			</dependency>
    			<!-- Mybatis代码生成工具 -->
    			<dependency>
    				<groupId>org.mybatis.generator</groupId>
    				<artifactId>mybatis-generator-core</artifactId>
    				<version>${mybatis-generator.version}</version>
    			</dependency>
    
    			<!-- Oracle连接 -->
    			<dependency>
    				<groupId>com.github.noraui</groupId>
    				<artifactId>ojdbc8</artifactId>
    				<version>${oracle.version}</version>
    			</dependency>
    			<!-- 获取本地计算机信息 -->
    			<dependency>
    				<groupId>com.github.votoanthuan</groupId>
    				<artifactId>sigar</artifactId>
    				<version>${sigar.version}</version>
    			</dependency>
    			<!-- JSON字符串和java对象的互转 -->
    			<dependency>
    				<groupId>net.sf.json-lib</groupId>
    				<artifactId>json-lib</artifactId>
    				<version>${json-lib.version}</version>
    				<classifier>jdk15</classifier>
    			</dependency>
    			<!-- XML工具包 -->
    			<dependency>
    				<groupId>xom</groupId>
    				<artifactId>xom</artifactId>
    				<version>${xom.version}</version>
    			</dependency>
    			<dependency>
    				<groupId>apache-httpclient</groupId>
    				<artifactId>commons-httpclient</artifactId>
    				<version>${apache-httpclient.version}</version>
    			</dependency>
    
    			<!-- java控制远程ssh,JAVA使用JSCH实现SFTP文件管理(上传、下载等) -->
    			<dependency>
    				<groupId>com.jcraft</groupId>
    				<artifactId>jsch</artifactId>
    				<version>${jsch.version}</version>
    			</dependency>
    		</dependencies>
    	</dependencyManagement>
    
    	<build>
    		<finalName>${project.artifactId}</finalName>
    		<plugins>
    			<!-- 资源文件拷贝插件 -->
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-resources-plugin</artifactId>
    				<!-- <version>2.7</version> -->
    				<configuration>
    					<encoding>UTF-8</encoding>
    				</configuration>
    			</plugin>
    			<!-- java编译插件 -->
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<!-- <version>3.2</version> -->
    				<configuration>
    					<source>1.8</source>
    					<target>1.8</target>
    					<encoding>UTF-8</encoding>
    				</configuration>
    			</plugin>
    		</plugins>
    		<!-- 插件版本的管理 pluginManagement 控制版本的,如果要使用,需要在子工程再配置坐标 -->
    		<pluginManagement>
    			<plugins>
    				<!-- 配置Tomcat插件 -->
    				<plugin>
    					<groupId>org.apache.tomcat.maven</groupId>
    					<artifactId>tomcat7-maven-plugin</artifactId>
    					<version>2.2</version>
    				</plugin>
    
    				<!-- 配置打包时跳过测试 ,首次配置使用的时候会自动联网进行下载 -->
    				<plugin>
    					<groupId>org.apache.maven.plugins</groupId>
    					<artifactId>maven-surefire-plugin</artifactId>
    					<version>2.12.4</version>
    				</plugin>
    			</plugins>
    		</pluginManagement>
    	</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.lee</groupId>
    	<artifactId>junli_web</artifactId>
    	<version>0.0.1-SNAPSHOT</version>
    	<packaging>war</packaging>
    	<!-- 引入父类依赖 -->
    	<parent>
    		<groupId>com.lee</groupId>
    		<artifactId>junli_parent</artifactId>
    		<version>0.0.1-SNAPSHOT</version>
    		<relativePath />
    		<!-- lookup parent from repository -->
    	</parent>
    	<dependencies>
    		<!-- 引入bean依赖 -->
    		<dependency>
    			<groupId>com.lee</groupId>
    			<artifactId>junli_manager_bean</artifactId>
    			<version>0.0.1-SNAPSHOT</version>
    		</dependency>
    		<!-- 引入base依赖 -->
    		<dependency>
    			<groupId>com.lee</groupId>
    			<artifactId>junli_manager_base</artifactId>
    			<version>0.0.1-SNAPSHOT</version>
    		</dependency>
    		<!-- 引入dao依赖 -->
    		<dependency>
    			<groupId>com.lee</groupId>
    			<artifactId>junli_manager_dao</artifactId>
    			<version>0.0.1-SNAPSHOT</version>
    		</dependency>
    		<!-- 引入interface依赖 -->
    		<dependency>
    			<groupId>com.lee</groupId>
    			<artifactId>junli_manager_interface</artifactId>
    			<version>0.0.1-SNAPSHOT</version>
    		</dependency>
    		<!-- netty -->
    		<!-- <dependency>
    			<groupId>io.netty</groupId>
    			<artifactId>netty</artifactId>
    		</dependency> -->
    
    	<!-- quartz定时任务 -->
    	<dependency>
    		<groupId>org.quartz-scheduler</groupId>
    		<artifactId>quartz</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.quartz-scheduler</groupId>
    		<artifactId>quartz-jobs</artifactId>
    	</dependency>
    
    	<!-- pagehelper分页插件 -->
    	<dependency>
    		<groupId>com.github.pagehelper</groupId>
    		<artifactId>pagehelper</artifactId>
    	</dependency>
    
    	<!-- freemarker模板引擎 -->
    	<dependency>
    		<groupId>org.freemarker</groupId>
    		<artifactId>freemarker</artifactId>
    	</dependency>
    
    	<!-- 日志 -->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter</artifactId>
    		<exclusions>
    			<exclusion>
    				<groupId>org.springframework.boot</groupId>
    				<artifactId>spring-boot-starter-logging</artifactId>
    			</exclusion>
    		</exclusions>
    		<!--使用下面这个和上面排除spring-boot-starter-logging是一样的效果 <exclusions> <exclusion> 
    			<artifactId>logback-classic</artifactId> <groupId>ch.qos.logback</groupId> 
    			</exclusion> <exclusion> <artifactId>log4j-over-slf4j</artifactId> <groupId>org.slf4j</groupId> 
    			</exclusion> </exclusions> -->
    	</dependency>
    	<dependency>
    		<groupId>org.slf4j</groupId>
    		<artifactId>slf4j-api</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.slf4j</groupId>
    		<artifactId>slf4j-log4j12</artifactId>
    	</dependency>
    
    	<!-- 打war包时加入此项, 告诉spring-boot tomcat相关jar包用外部的,不要打进去 -->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-tomcat</artifactId>
    		<scope>provided</scope>
    	</dependency>
    
    	<!-- EL表达式 -->
    	<dependency>
    		<groupId>javax.el</groupId>
    		<artifactId>javax.el-api</artifactId>
    		<version>${javax.el-api.version}</version>
    	</dependency>
    
    	<dependency>
    		<groupId>javax.validation</groupId>
    		<artifactId>validation-api</artifactId>
    		<!-- <version>2.0.0.Alpha1</version> -->
    	</dependency>
    
    	<!-- ikanalyzer中文分词器 -->
    	<dependency>
    		<groupId>com.janeluo</groupId>
    		<artifactId>ikanalyzer</artifactId>
    		<version>${ikanalyzer.version}</version>
    	</dependency>
    	<!-- ikanalyzer中文分词器对solr7版本的支持 -->
    	<dependency>
    		<groupId>com.github.magese</groupId>
    		<artifactId>ik-analyzer-solr7</artifactId>
    		<version>${ik-analyzer-solr7.version}</version>
    	</dependency>
    	<!--   导入solrJ依赖 -->
    	<dependency>
    		<groupId>org.apache.solr</groupId>
    		<artifactId>solr-solrj</artifactId>
    		<version>${solr.version}</version>
    	</dependency>
    
    	<!-- ActiveMQ支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-jms</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.activemq</groupId>
    		<artifactId>activemq-all</artifactId>
    		<version>${activemq-all.version}</version>
    	</dependency>
    
    	<!-- dubbo服务 -->
    	<dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>dubbo</artifactId>
    		<exclusions>
    			<exclusion>
    				<groupId>org.springframework</groupId>
    				<artifactId>spring</artifactId>
    			</exclusion>
    			<exclusion>
    				<groupId>org.jboss.netty</groupId>
    				<artifactId>netty</artifactId>
    			</exclusion>
    		</exclusions>
    	</dependency>
    	<!-- jedis工具包 -->
    	<dependency>
    		<groupId>com.github.sazzad16</groupId>
    		<artifactId>jedis</artifactId>
    		<version>${jedis.version}</version>
    	</dependency>
    
    	<!-- springboot整合web应用 -->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-web</artifactId>
    	</dependency>
    	<!-- springboot安全认证模块 -->
    	<!-- <dependency> -->
    	<!-- <groupId>org.springframework.boot</groupId> -->
    	<!-- <artifactId>spring-boot-starter-security</artifactId> -->
    	<!-- </dependency> -->
    	<!-- spring-boot停止服务功能 -->
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-test</artifactId>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-starter-jdbc</artifactId>
    	</dependency>
    	<!-- springboot集成mybatis -->
    	<dependency>
    		<groupId>org.mybatis.spring.boot</groupId>
    		<artifactId>mybatis-spring-boot-starter</artifactId>
    		<version>${mybatis-spring-boot-starter.version}</version>
    	</dependency>
    	<!-- 阿里Druid连接池 -->
    	<dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>druid</artifactId>
    		<version>${druid.version}</version>
    	</dependency>
    	<!-- zookeeper套件 -->
    	<dependency>
    		<groupId>org.apache.zookeeper</groupId>
    		<artifactId>zookeeper</artifactId>
    		<version>${zookeeper.version}</version>
    		<!-- <exclusions> -->
    		<!-- <exclusion> -->
    		<!-- <groupId>org.slf4j</groupId> -->
    		<!-- <artifactId>slf4j-log4j12</artifactId> -->
    		<!-- </exclusion> -->
    		<!-- <exclusion> -->
    		<!-- <groupId>log4j</groupId> -->
    		<!-- <artifactId>log4j</artifactId> -->
    		<!-- </exclusion> -->
    		<!-- </exclusions> -->
    	</dependency>
    	<dependency>
    		<groupId>com.101tec</groupId>
    		<artifactId>zkclient</artifactId>
    		<version>${zkclient.version}</version>
    		<!-- <exclusions> -->
    		<!-- <exclusion> -->
    		<!-- <groupId>org.slf4j</groupId> -->
    		<!-- <artifactId>slf4j-log4j12</artifactId> -->
    		<!-- </exclusion> -->
    		<!-- <exclusion> -->
    		<!-- <groupId>log4j</groupId> -->
    		<!-- <artifactId>log4j</artifactId> -->
    		<!-- </exclusion> -->
    		<!-- </exclusions> -->
    	</dependency>
    
    	<!-- 阿里JSON工具 -->
    	<dependency>
    		<groupId>com.alibaba</groupId>
    		<artifactId>fastjson</artifactId>
    		<version>${fastjson.version}</version>
    	</dependency>
    	<!-- base64工具包 -->
    	<dependency>
    		<groupId>org.apache.directory.studio</groupId>
    		<artifactId>org.apache.commons.codec</artifactId>
    		<version>${org.apache.commons.codec.version}</version>
    	</dependency>
    	<!-- Junit测试 -->
    	<dependency>
    		<groupId>junit</groupId>
    		<artifactId>junit</artifactId>
    		<scope>provided</scope>
    	</dependency>
    	<!-- JSTL标签库 -->
    	<dependency>
    		<groupId>javax.servlet</groupId>
    		<artifactId>jstl</artifactId>
    	</dependency>
    	<!-- google.guava工具包 -->
    	<!-- <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> 
    		<version>r07</version> </dependency> -->
    
    
    	<!-- Spring 4.3.3 -->
    	<!-- Core Container 核心容器 -->
    	<!-- 核心工具类,Spring其它模块大量使用Spring-core -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-test</artifactId>
    		<version>4.3.3.RELEASE</version>
    		<scope>test</scope>
    	</dependency>
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-core</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 运行时Spring容器 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-context</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- Spring容器对第三方包的集成 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-context-support</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- Spring定义Bean的支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-beans</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 使用表达式语言在运行时查询和操作对象 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-expression</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- End Core Container 核心容器 -->
    
    	<!-- AOP -->
    	<!-- 基于代理的AOP支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-aop</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 基于AspectJ的AOP支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-aspects</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    
    	<!-- 处理事务和AOP所需的包 -->
    	<dependency>
    		<groupId>org.aspectj</groupId>
    		<artifactId>aspectjrt</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>org.aspectj</groupId>
    		<artifactId>aspectjweaver</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>aopalliance</groupId>
    		<artifactId>aopalliance</artifactId>
    		<version>${aopalliance.version}</version>
    	</dependency>
    
    	<!-- web -->
    	<!-- 提供基础的web集成的功能,在web项目中提供Spring容器 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-web</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 提供基于Servlet的SpringMVC -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-webmvc</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 提供WebSocket功能 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-websocket</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 提供Portlet环境支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-webmvc-portlet</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- End web -->
    
    	<!-- DataAccess/Integration 数据访问/集成 -->
    	<!-- 提供以JDBC访问数据库的支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-jdbc</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 提供编程式和声明式的事务支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-tx</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 提供对 对象/关系映射技术的支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-orm</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- 提供对JMS的支持 -->
    	<dependency>
    		<groupId>org.springframework</groupId>
    		<artifactId>spring-jms</artifactId>
    		<version>4.3.3.RELEASE</version>
    	</dependency>
    	<!-- End DataAccess/Integration 数据访问/集成 -->
    
    	<!-- 将JSON格式的数据转化为类对象 -->
    	<dependency>
    		<groupId>com.fasterxml.jackson.core</groupId>
    		<artifactId>jackson-core</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>com.fasterxml.jackson.core</groupId>
    		<artifactId>jackson-databind</artifactId>
    	</dependency>
    	<dependency>
    		<groupId>com.fasterxml.jackson.core</groupId>
    		<artifactId>jackson-annotations</artifactId>
    	</dependency>
    
    	<!-- 文件上传管理 -->
    	<dependency>
    		<groupId>commons-io</groupId>
    		<artifactId>commons-io</artifactId>
    		<version>${commons-io.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>commons-fileupload</groupId>
    		<artifactId>commons-fileupload</artifactId>
    		<version>${commons-fileupload.version}</version>
    		<!-- <exclusions> -->
    		<!-- <exclusion> -->
    		<!-- <groupId>commons-io</groupId> -->
    		<!-- <artifactId>commons-io</artifactId> -->
    		<!-- </exclusion> -->
    		<!-- </exclusions> -->
    	</dependency>
    	<!-- 引入poi,解析workbook视图 -->
    	<dependency>
    		<groupId>org.apache.poi</groupId>
    		<artifactId>poi-examples</artifactId>
    		<version>${org.apache.poi.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.poi</groupId>
    		<artifactId>poi-scratchpad</artifactId>
    		<version>${org.apache.poi.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.poi</groupId>
    		<artifactId>poi-excelant</artifactId>
    		<version>${org.apache.poi.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.poi</groupId>
    		<artifactId>poi-ooxml-schemas</artifactId>
    		<version>${org.apache.poi.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.poi</groupId>
    		<artifactId>poi-ooxml</artifactId>
    		<version>${org.apache.poi.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.poi</groupId>
    		<artifactId>poi</artifactId>
    		<version>${org.apache.poi.version}</version>
    	</dependency>
    	<!-- 处理excel和上面功能是一样的 -->
    	<dependency>
    		<groupId>net.sourceforge.jexcelapi</groupId>
    		<artifactId>jxl</artifactId>
    		<version>${jxl.version}</version>
    	</dependency>
    	<!-- Mybatis代码生成工具 -->
    	<dependency>
    		<groupId>org.mybatis.generator</groupId>
    		<artifactId>mybatis-generator-core</artifactId>
    		<version>${mybatis-generator.version}</version>
    	</dependency>
    
    	<!-- Oracle连接 -->
    	<dependency>
    		<groupId>com.github.noraui</groupId>
    		<artifactId>ojdbc8</artifactId>
    		<version>${oracle.version}</version>
    	</dependency>
    	<!-- MySQL连接 -->
    	<dependency>
    		<groupId>mysql</groupId>
    		<artifactId>mysql-connector-java</artifactId>
    	</dependency>
    	<!-- 获取本地计算机信息 -->
    	<dependency>
    		<groupId>com.github.votoanthuan</groupId>
    		<artifactId>sigar</artifactId>
    		<version>${sigar.version}</version>
    	</dependency>
    	<!-- JSON字符串和java对象的互转 -->
    	<dependency>
    		<groupId>net.sf.json-lib</groupId>
    		<artifactId>json-lib</artifactId>
    		<version>${json-lib.version}</version>
    		<classifier>jdk15</classifier>
    	</dependency>
    	<!-- XML工具包 -->
    	<dependency>
    		<groupId>xom</groupId>
    		<artifactId>xom</artifactId>
    		<version>${xom.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>apache-httpclient</groupId>
    		<artifactId>commons-httpclient</artifactId>
    		<version>${apache-httpclient.version}</version>
    	</dependency>
    	<!-- 将httpcore4.2.1、httpclient4.2.1版本号改成api接口可用的版本 -->
    	<dependency>
    		<groupId>org.apache.httpcomponents</groupId>
    		<artifactId>httpcore-nio</artifactId>
    	</dependency>
    	<!-- http请求工具 -->
    	<dependency>
    		<groupId>org.apache.httpcomponents</groupId>
    		<artifactId>httpclient</artifactId>
    	</dependency>
    
    	<!-- java控制远程ssh,JAVA使用JSCH实现SFTP文件管理(上传、下载等) -->
    	<dependency>
    		<groupId>com.jcraft</groupId>
    		<artifactId>jsch</artifactId>
    		<version>${jsch.version}</version>
    	</dependency>
    	<dependency>
    		<groupId>org.apache.httpcomponents</groupId>
    		<artifactId>httpcore</artifactId>
    	</dependency>
    </dependencies>
    
    <build>
    	<finalName>${project.artifactId}</finalName>
    	<pluginManagement>
    		<plugins>
    			<plugin>
    				<groupId>org.mybatis.generator</groupId>
    				<artifactId>mybatis-generator-maven-plugin</artifactId>
    				<version>${mybatis-generator.version}</version>
    				<!-- 数据库驱动 -->
    				<dependencies>
    					<dependency>
    						<groupId>mysql</groupId>
    						<artifactId>mysql-connector-java</artifactId>
    						<version>${mysql.version}</version>
    					</dependency>
    					<dependency>
    						<groupId>com.github.noraui</groupId>
    						<artifactId>ojdbc8</artifactId>
    						<version>${oracle.version}</version>
    					</dependency>
    				</dependencies>
    				<!-- 自动生成 -->
    				<executions>
    					<execution>
    						<id>Generate MyBatis Artifacts</id>
    						<goals>
    							<goal>generate</goal>
    						</goals>
    						<configuration>
    							<!-- 指定文件位置好像不起作用,始终默认读取src/main/resources/generatorConfig.xml文件 -->
    							<configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
    							<!--允许移动生成的文件 -->
    							<verbose>true</verbose>
    							<!--允许覆盖生成的文件 -->
    							<overwrite>true</overwrite>
    						</configuration>
    					</execution>
    				</executions>
    			</plugin>
    			<plugin>
    				<groupId>org.apache.maven.plugins</groupId>
    				<artifactId>maven-compiler-plugin</artifactId>
    				<configuration>
    					<source>1.8</source>
    					<target>1.8</target>
    					<encoding>UTF-8</encoding>
    				</configuration>
    			</plugin>
    		</plugins>
    	</pluginManagement>
    </build>
    
    展开全文
  • Eclipse中maven项目添加依赖

    千次阅读 2017-02-16 21:38:07
    1.在Eclipse中创建Eclipse项目后如何添加jar包? ...各个标签的含义如下: Overview:显示maven项目的一些基本信息Dependencies:添加...比如tomcat-maven-plugin等Dependency Hierarchy:用于显示jar包的依赖关系.没...

    1.在Eclipse中创建Eclipse项目后如何添加jar包?

    点击pom.xml文件.我们可以看到下面有7个标签。



    各个标签的含义如下:

    Overview:显示maven项目的一些基本信息
    Dependencies:添加jar包的页面
    Plugins:添加maven插件的页面.比如tomcat-maven-plugin等
    Dependency Hierarchy:用于显示jar包的依赖关系.没事的时候可以看看jar包的依赖关系
    Effective POM:显示maven的编译路径,plugin之类的.也可以无视
    pom.xml:导入jar包的信息,可以在其中进行修改

    现在添加jar包:
    点击Dependencies标签页
    点击Dependencies中的add按钮 

    搜索mongodb,显示如下图

     

    其中Scope的选择,默认compile即可。

    对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact对应的jar包在classpath中。
    而对于scope=provided的情况,则可以认为这个provided是目标容器已经provide这个artifact。换句话说,它只影响到编译,测试阶段。在编译测试阶段,我们需要这个artifact对应的jar包在classpath中,而在运行阶段,假定目标的容器(比如我们这里的liferay容器)已经提供了这个jar包,所以无需我们这个artifact对应的jar包了。

    添加完成后,在Dependencies页签可以进行管理,包括调整版本号等。



    type表示依赖包的类型. 
    Scope表示这个依赖包的作用周期. 
    这些我们暂时不理会. 
    保存后.如果是第一次安装maven,可能会有一段长时间的jar包下载过程. 
    只要第一次把jar包下载到本地后就不需要下载了. 
    maven默认的jar包下载地址在C盘 -->用户-->%User%-->.m2中 

    maven会把和添加的jar包有依赖关系的全部下载下来.这样就避免了jar包缺失的问题了。

    比如添加Spring-mvc相关的jar包,
    maven下载完jar包后,点开项目中的Maven Dependencies,项目会下载很多jar包。

    多的这些包其实是和spring-context包有依赖关系的包。

    <iframe id="iframe_0.39530447825835613" style="margin: 0px; padding: 0px; border-width: initial; border-style: none; width: 381px; height: 206px;" src="data:text/html;charset=utf8,%3Cstyle%3Ebody%7Bmargin:0;padding:0%7D%3C/style%3E%3Cimg%20id=%22img%22%20src=%22http://dl.iteye.com/upload/attachment/444868/7e670c51-1388-3c91-a09e-d8e2d7e7f565.png?_=4680323%22%20style=%22border:none;max-width:989px%22%3E%3Cscript%3Ewindow.onload%20=%20function%20()%20%7Bvar%20img%20=%20document.getElementById('img');%20window.parent.postMessage(%7BiframeId:'iframe_0.39530447825835613',width:img.width,height:img.height%7D,%20'http://www.cnblogs.com');%7D%3C/script%3E" frameborder="0" scrolling="no"></iframe> 


    2.未使用Maven,出现服务器Jar包冲突的解决

    在开发测试时正常, 一旦部署到正式服务器上, 如果出现以下几类异常,很可能是存在jar包冲突:

    1, java类找不到 java.lang.ClassNotFoundException
    2, 方法不存在 java.lang.NoSuchMethodError
    3, 字段不存在 java.lang.NoSuchFieldError
    4, 类错误 java.lang.LinkageError
     
    war包中jar包和服务器上jar包冲突, 由于现在服务器功能越来越强大, 而引入的jar也在不断增加, 
    出现的冲突的可能性也越来越大, 而且正式环境复杂, 而且不能轻易修改服务器相关配置, 
    为解决jar包冲突的问题带来困难, 如果去解决过这些问题, 那是相当折腾人的, 下面是一些方法的总结.

    产生冲突的原因: 
    这类冲突根本原因就是: 同一个java类存在多个jar包或类路径中, 而这大多由于使用了不同jar包版本造成.
     
    下面的办法整理自网上资源,其实正确的使用Maven可以很好的避免这种情况的发生。

    解决办法:

    1, 案例法 
    使用服务器上已有应用的jar包(前提:服务器上面已经部署过别的应用), 曾经使用过此方法解决冲突

    2, 最小化法 
    正式环境有很多限制, 上传,部署,启停,测试这些过程越简单越好, 最近一次把war包中137jar删除只剩下14个jar包, 
    整个测试验证周期大大缩短

    3, 来源法 
    如果能知道类加载于哪个jar包, 解决就比较容易, 在异常中会有出错类的完整类名, 
    如果能获取此类加载于那个jar包, 就能确认冲突的jar包,
    如何知道class加载于那个jar包, 昨天灵机一动想到了一个方法, 其实也很简单, 代码如下:
    1
    clazz.getResource( "className.class" ).toString();

      

    4, 服务器分析法
    了解各种应用服务器的class加载机制, 就能判断是什么原因, 什么时候导致的冲突, 这样可以通过调整class加载顺序解决, 
    最近一次WAS服务器上的jar包冲突就此方法解决.
     

    3.tomcat类加载顺序

     

    Tomcat下的文件目录 
    /bin:存放启动和关闭tomcat的脚本文件; 
    /conf:存放tomcat的各种配置文件,比如:server.xml 
    /server/lib:存放tomcat服务器所需要的各种jar文件(jar文件只可被tomcat 服务器访问) 
    /server/webapps:存放tomcat自带的两个web应用:admin应用和manager应用。 
    /common/lib:存放tomcat服务器以及所有web应用都可以访问的jar文件夹(web和tomcat服务器都可访问此jar) 
    /shared/lib:存放web都可访问的jar文件。(可以被所有的web访问,但不能被tomcat访问) 
    /logs:存放tomcat的日志文件 
    /webapps:当发布web应用时,默认情况下把web应用文件放于此目录下 
    /work:tomcat把由jsp生成的Servlet放于此目录 

    另:在web应用中,WEB-Inf目录下,也可以建立lib子目录,在此子目录下可以存放各种jar文件,这些jar文件只能被当前web应用访问。其中,在web-inf目录下的lib与classes目录,Tomcat类装载器先装载classes目录下的类,再装载lib目录下的类。因为类同名时,classes优先。 

    其中jsp运行时,查找class的顺序为:项目文件夹(WEB-INF\lib)—>容器文件夹(tomcat\common\lib)—>jdk文件夹(jdk\jre\lib\ext) 
    Tomcat是一种向上寻找的层次结构,也有向下的,或者是可配置的。 

    展开全文
  • 可在项目parent的pom.xml中统一添加Gson的依赖,这样所有的子项目都可以使用该依赖,如下所示: <dependencies> <!-- 当parent中定义了依赖,所有的子项目中都可以直接应用。 --&..

    ​​​​​​场景描述

    设根项目parent下有项目A、项目B和项目C三个子项目,所有子项目都使用依赖Gson,应该如何配置?

    解决方法

    如果项目A、B和C各自添加对Gson的依赖,当Gson的版本变化时,则需要所有每一个子项目的依赖,工作量较大,不易维护。

    可在项目parent的pom.xml中统一添加Gson的依赖,这样所有的子项目都可以使用该依赖,如下所示:

    <dependencies> <!-- 当parent中定义了依赖,所有的子项目中都可以直接应用。 -->

            <dependency>

                <groupId>com.google.code.gson</groupId>

                <artifactId>gson</artifactId>

                <version>2.8.8</version>

            </dependency>

        </depende

    展开全文
  • 新创建一个maven工程,打开后会自动更新依赖包,mvn compile 一下,看到BUILD SUCCESS 表示编译OK 打开pom文件,添加一个依赖项 <parent> <artifactId>spring-boot-starter-parent</...
  • 最近刚完成一个用Maven构建的Web项目,看了一些Maven方面的书,比如《maven实战》,但还是对Maven多模块项目理解得不清晰,所以花了一点时间好好研究了下,现分享如下。 2、问题 下面是一个简略的项目结构图: --...
  • UTF-8 // 1.8 // 1.8 // 一般应用场景:一般在父项目中写好常用版本号属性,就可以对子项目进行统一管理(需要子项目通过parent标签引入该父项目) ② Maven的全局变量设置 自定义属性 Ⅰ 在通过自定义标签声明变量...
  • maven依赖冲突以及解决方法

    千次阅读 2020-06-23 11:38:53
    每个显式声明的类包都会依赖于一些其它的隐式类包,这些隐式的类包会被maven间接引入进来,从而造成类包冲突 如何解决依赖冲突 首先查看产生依赖冲突的类jar,其次找出我们不想要的依赖类jar,手工将其排除在外就...
  • maven项目pom.xml中parent标签的使用

    千次阅读 2020-06-24 11:58:27
    使用maven是为了更好的帮项目管理包依赖maven的核心就是pom.xml。当我们需要引入一个jar包时,在pom文件中加上就可以从仓库中依赖到相应的jar包。现在有这样一个场景,有两个web项目A、B,一个java项目C,它们都...
  • 上一篇博文讲到如何安装maven,这篇算是它的续篇,总结下maven是如何管理依赖的。 maven强大之处就是管理...如下是一个最简单的为当前项目添加依赖的示例: IntelliJ Idea > Preferences… > Build, Execution, Dep
  • springboot项目的构建一般存在如下依赖: &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;artifactId&gt;spring-boot-starter-parent&lt;/...
  • springboot的依赖包,固定版本的parent依赖固定版本包,如果升级只需修改parent的版本号,即可统一更换依赖。 \ 第三方依赖,解决了第三方依赖版本不兼容的冲突,使用第三方依赖更加便捷 插件 2)...
  • 解决Maven项目相互依赖/循环依赖/双向依赖的问题 转自:https://blog.csdn.net/leolu007/article/details/53079875 添加新随笔很​多​时​候​随​着​项​目​的​膨​胀​,模​块​会​越​来​越​多​,如​...
  • Eclipse+Maven+SpringBoot通过创建Maven项目添加依赖搭建SpringBoot项目创建Maven项目添加依赖成为SpringBoot项目运行完成后可以得到如下结果:完整的项目目录结构总结使用Maven创建Springboot项目 创建Maven项目...
  • spring-boot-starter-parentmaven依赖报错

    千次阅读 2019-01-17 17:10:12
    看idea的日志发现这个依赖在某个路径下找不到,因为本人的maven配置的是公司的镜像,但是公司的镜像中不包含这个依赖,所以又添加了一个镜像,即可正常下载。 今天从 http://start.spring.io/ 下载的demo项目,导入...
  • 每一个项目都需要添加自己的版本,还要互相比对,每次升级一些第三方依赖需要修改所有文件,于是产生了自己写parent的想法。 maven多继承和继承链:https://blog.csdn.net/bingo_liu/article/details/73609381...
  • maven依赖传递性讲解

    万次阅读 2017-04-16 23:50:18
    在日常项目中经常会碰到maven依赖问题,尤其是碰到类似struts的jar包升级,每一次都要动很多项目,有些间接依赖会导致,为了搞清楚maven整个依赖qing'kuan 原文引用自:http://elim.iteye.com/blog/2057317 当项目A...
  • 使用 parent 控制依赖版本是很常见的事。如果你有过控制依赖版本的这种经历,你可能就会遇到过第三方版本之间的冲突,本文不介绍如何解决冲突,但是会提供给你一个基本不存在冲突的基础依赖。得益于 Spring ,尤其是...
  • maven依赖依赖不同版本处理

    千次阅读 2019-11-26 12:34:47
    Druid+mybatis配置log4j2前言总结具体步骤1. 配置mybatis-config.xml2. 环境配置1. 依赖配置:2. druid和spring配置:3....添加依赖关系,排除不需要的依赖 增加log4j2.xml配置 具体步骤 1. 配置mybatis-c...
  • Maven屏蔽Parent(Module)中的Plugin

    千次阅读 2018-11-08 16:48:55
    上面的异常看了一下,发现是因为Parent中引用了maven-checkstyle-plugin,但是当本身Module打包的过程中,触发了其中的plugin的check,产生的报错,感觉这些都是无关的那就研究了一下如何屏蔽。 下面是屏蔽的方法贴出来 ...
  • 流程1 第一步:打开cmd窗口,进入repository本地仓库 执行命令: 进入本地仓库: cd %userprofile%\.m2\repository 第二步:执行以下命令: for /r %i in (*.lastUpdated) do del %i 流程2 mvn -U idea:idea ...
  • 今天在学习尚硅谷的springboot时,导入spring boot相关的依赖报错。 视频给的pom.xml代码如下: 在maven的setting.xml文件中,视频让修改了<profiles></profiles>标签里的内容: 但我的pom.xml...
  • 1新建maven项目【我这里是设置的jar包依赖都是在parent 的pom里面】 File ==>Maven Project  填写Group id 和Artifact Id ,因为是多模块依赖 packaging 选择为pom 2 构建其他模块的maven【common...
  • 参考连接:https://blog.csdn.net/u011624903/article/details/87918800 转载于:https://my.oschina.net/qimh...
  • 一、父子项目继承 1.1、dependencies 如果父项目pom中使用的是 .... 则子项目pom会自动使用pom中的jar包。 1.2、dependencyManagement 如果父项目pom...则先声明的依赖,会覆盖后面声明的依赖 暂时添加这些,以后再补充
  • 二、创建maven项目 File -&gt; New -&gt; Other… -&gt; 搜索maven -&gt; Next -&gt; Next -&gt; 选择maven archetype类型 -&gt;Next -&gt; 设置Group Id...
  • springboot maven 引入依赖说明 pom.xml

    千次阅读 2020-01-09 10:49:19
    spring-boot-starter-parent 是一个特殊的starter,它提供了项目相关的默认依赖,使用它之后 ,常用的包依赖可以省去 version 标签。我们会惊奇地发现,我们的工程自动添加了好多好多jar包, 这些 jar包正是开发时...
  • Maven中module和parent标签的填写方式

    千次阅读 2017-11-10 15:03:33
    都知道,maven项目间依赖是双向绑定的(这个是自己瞎说的词,自己理解起来比较容易),即像树结构一样,一个子模块只能有一个父模块,父下面有多个子。子模块使用parent标识父,父模块使用module标识子。自己开始...
  • Maven中SpringBoot使用自己的parent

    千次阅读 2019-03-02 16:40:52
    我们在新开始一个 SpringBoot 项目的时候,会默认继承 spring-boot-starter-parent ,像这样: &lt;parent&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 40,806
精华内容 16,322
关键字:

maven添加依赖parent