zoukankan      html  css  js  c++  java
  • Maven个人手册

    一、Maven基本使用与设置

    1、安装maven插件

      1)、下载maven并解压到指定目录,到该目录下复制当前路径path

      2)、在eclipse的dropins目录下编辑maven.link,将maven所在的path填写进去:

    path=D:/Program Files/DevTools/apache-maven-3.3.9

      然后启动eclipse,在Window-->Prefrence窗口看到Maven的选项说明maven插件安装成功。

                   

    2、使用maven定义的repository仓库

      1)、到maven软件包的conf目录下,编辑settings.xml,填写repository的路径:

           

      2)、到eclipse中修改默认的maven repository目录

        

      保存退出

      3)、启用maven软件包里的settings.xml

         

      然后Update Settings即可。

    3、创建Maven工程

      File -->New Project -->Maven Project -->Next就可以-->选择quickstart -->填写Group ID和Artifact ID,Finish

    4、使用Maven打包

    方式一:在工程上右击-->run --> maven clean -->maven install 会在工程所在路径的target目录下生成xx.jar包

    方式二:在工程上右击-->Export -->Jar File -->设置要跑的Java程序、依赖和jar包的导出路径及文件名-->finish

    二、maven常见问

    1、pom.xml报错:

        

    同时打开pom.xml有类似如下提示:

        

    解决:

      方式一:在项目上右击--->Maven---->Update Project--->选择出现错误的项目,然后在下方选中强制更新选项,单击OK即可。

        

    方式二:命令窗口执行:

    mvn clean install -e -U

    -e 详细异常,-U强制更新

     三、Maven依赖常见问题

    1、缺少依赖

      现象:添加部分Maven依赖后,开发过程中代码正常编译,运行时提示缺少依赖

      原因:这是因为由于各种原因,Maven没有下载全部所需要的对应依赖造成的

      解决方案:按照提示添加相关依赖即可。

    示例:在某个项目中,运行时,提示如下错误:

    Exception in thread "main" java.lang.NoClassDefFoundError: kafka/api/OffsetRequest
        at storm.kafka.KafkaConfig.<init>(KafkaConfig.java:43)
        at storm.kafka.SpoutConfig.<init>(SpoutConfig.java:32)
        at cn.crxy.storm_project5.LogProcessTopology.main(LogProcessTopology.java:27)
    Caused by: java.lang.ClassNotFoundException: kafka.api.OffsetRequest
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)

      根据标示的提示信息,可知缺少kafka依赖,添加即可。(在网址:mvnrepository.com上,搜索kafka依赖,添加)

    2、依赖冲突(依赖包中子依赖重复)

      现象:在开发过程中,代码编译正常,运行时提示在class path中出现两个类似的依赖包

      分析:依赖a-1在A中出现,依赖a-2在B中出现(A和B为项目的依赖,a-1和a-2为对应的子依赖,它们功能相同,只是版本等有所差异),系统不知道引用哪个子依赖项,所以出现此错误。

      解决方案:在依赖中过滤掉多余的子依赖即可

    示例:某次运行代码时,提示如下错误:

    Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path
        java.lang.NoClassDefFoundError: Could not initialize class org.apache.log4j.Log4jLoggerFactory
        at org.apache.log4j.Logger.getLogger(Logger.java:39) ~[log4j-over-slf4j-1.6.6.jar:1.6.6]

    解决:在依赖中进行过滤,示意:

            <!-- 因为storm中有logback的实现,kafka中有log4j的实现,需要把kafka中的log4j过滤掉 -->
            <dependency>
                <groupId>org.apache.kafka</groupId>
                <artifactId>kafka_2.11</artifactId>
                <version>0.8.2.2</version>
                <exclusions>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>        <!--如果需要过滤多个,添加多个exclusion即可 -->
                </exclusions>
            </dependency>

    3、依赖冲突(代码和运行环境中依赖重复)

      现象:开发好的软件包在测试服务器上运行时,提示依赖包冲突

      原因:默认打包的时候,所包含的依赖包中已经有依赖A,而线上跑的集群中也有对应的依赖A,二者冲突造成此错误

      解决:设置自己开发的依赖包的作用范围(级别),使其在开发编译时有效,打包时无效

    示例:

    		<!-- 这个依赖编译时需要,运行时就不需要了,因为storm集群里面已经包含 -->
    		<dependency>
    			<groupId>org.apache.storm</groupId>
    			<artifactId>storm-core</artifactId>
    			<version>0.9.3</version>
    			<scope>provided</scope>
    		</dependency>
    

    4、一次性设置jdk的编译级别和运行级别为1.7(推荐)

      在项目组开发过程中,开发工具eclipse默认的jdk编译和运行级别都是jdk1.5的,在开发过程中会造成很多问题,一个典型的例子时jdk1.5不支持注解,而在1.7版本可用。

    因此需要强制指定编译和运行级别。一种推荐的解决方案为在pom.xml中指定:

        <build>
            <plugins>
                <!-- compiler插件, 设定JDK版本 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.7</source> <!-- 源代码使用的开发版本 -->
                        <target>1.7</target> <!-- 需要生成的目标class文件的编译版本 -->
                        <!-- 一般而言,target与source是保持一致的,但是,有时候为了让程序能在其他版本的jdk中运行(对于低版本目标jdk,源代码中需要没有使用低版本jdk中不支持的语法),会存在target不同于source的情况 -->
                    </configuration>
                </plugin>
            </plugins>
        </build>

      另外一种可采用的方案是在项目上右击,在Properties面板中上指定,这种方法在更新项目后,会重新恢复默认的1.5版本,所以不推荐。

     四、开发工作中常用Maven依赖

    1、HBase依赖(以1.15版本为例)

    <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase</artifactId>
                <version>1.1.5</version>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-client</artifactId>
                <version>1.1.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-common</artifactId>
                <version>1.1.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-server</artifactId>
                <version>1.1.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-protocol</artifactId>
                <version>1.1.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-hadoop2-compat</artifactId>
                <version>1.1.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-shell</artifactId>
                <version>1.1.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.hbase</groupId>
                <artifactId>hbase-examples</artifactId>
                <version>1.1.5</version>
            </dependency>  
    View Code

    注:在eclipse下载jar的过程中,不要随便关闭,如果项目编译有问题,发现是jar缺失,可用如下方法解决:

      在命令行,进入到项目根目录(有pom.xml),执行mvn clean compile -X

    2、Redis依赖 3.0

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.8.1</version>
    </dependency>
    View Code

     3、ES依赖 1.4.4

    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>1.4.4</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.1.3</version>
    </dependency>
    <!-- 日志 -->
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.10</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.10</version>
    </dependency>
    View Code

     4、Storm依赖 0.9.3

    <dependency>
        <groupId>org.apache.storm</groupId>
        <artifactId>storm-core</artifactId>
        <version>0.9.3</version>
    </dependency>
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.4</version>
    </dependency>
    View Code

    5、Spark 1.4.1

    <!--spark -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-core_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hadoop</groupId>
        <artifactId>hadoop-client</artifactId>
        <version>2.6.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-tools_2.10</artifactId>
        <version>1.1.0-cdh5.2.0-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-assembly_2.10</artifactId>
        <version>1.5.0-cdh5.5.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-repl_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-catalyst_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-network-common_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    
    <!--spark on yarn -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-yarn_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-network-yarn_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    
    <!--spark-streaming -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming_2.10</artifactId>
        <version>1.4.1</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-flume_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-flume-sink_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-kafka_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-streaming-kafka-assembly_2.10</artifactId>
        <version>1.4.1</version>
    </dependency>
    
    <!--spark-sql -->
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-sql_2.10</artifactId>
        <version>1.4.1</version>
        <!-- <version>1.3.0-cdh5.4.4</version> -->
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive_2.10</artifactId>
        <version>1.4.1</version>
        <!-- <version>1.3.0-cdh5.4.4</version> -->
    </dependency>
    <dependency>
        <groupId>org.apache.spark</groupId>
        <artifactId>spark-hive-thriftserver_2.10</artifactId>
        <version>1.2.0-cdh5.3.3</version>
    </dependency>
    
    <!-- JSON PAESE -->
    <dependency>
        <groupId>com.typesafe.play</groupId>
        <artifactId>play-json_2.10</artifactId>
        <version>2.4.0-M1</version>
    </dependency>
    
    <!-- mysql -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.14</version>
    </dependency>
    
    <!--spark dependency jar -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.6.0</version>
    </dependency>
    
    
    <!-- HBase -->
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-client</artifactId>
        <version>1.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-common</artifactId>
        <version>1.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-server</artifactId>
        <version>1.0.0</version>
    </dependency>
    View Code

     6、Oracle依赖 11.2

    参考:http://www.cnblogs.com/chinas/p/6250608.html

  • 相关阅读:
    以AO方式给SceneControl控件设置BaseHeight
    TreeView只能选中一个节点
    Excel导出DataTable
    TOCControl右键菜单
    Arcgis Engine符号化相关
    shapefile文件锁定问题
    ArcGIS符号库serverstyle文件编辑注意事项
    CentOS运维常用命令
    常用shell
    javascript浮点数相减、相乘出现一长串小数
  • 原文地址:https://www.cnblogs.com/chinas/p/5964866.html
Copyright © 2011-2022 走看看