maven如何编译(陈老师精讲一看就懂)

陈老师说了,没强调的意味着现在不要花精力去研究,会用即可。后面不断用它自然不就会了吗。

maven被陈老师讲完之后简直太特么简单了,以下是步骤:

1. eclipse- new project--maven 创建maven项目

2. 一直next即可,group id就是公司名,aritfactId就是模块名,version随便输入0.0.1或者1.0.0,package选你给我打成jar包,然后它会让你选模板,模板选一个quick-start,它就是包含一些基本的东西让我们快速开始。

以后要创建web或者其他项目,再选其他模板。

3. maven创建好了,怎么用呢?

比方说,你已经知道你打算用一个类了,那你肯定知道它的类名,现在把它的类名输入到 【maven central repo】https://search.maven.org 这个网址的搜索栏里,你就可以获得它的maven写法。

4. maven写法如下:

group id就是公司名

artifactId就是模块名、项目名

version就是版本号

<dependency>
  <groupId>ch.cern.hadoop</groupId>
  <artifactId>hadoop-common-project</artifactId>
  <version>2.7.5.1</version>
  <type>pom</type>
</dependency>

dependency为什么会有type为pom,默认的值是什么? 
dependency中type默认为jar即引入一个特定的jar包。那么为什么还会有type为pom呢?当我们需要引入很多jar包的时候会导致pom.xml过大,我们可以想到的一种解决方案是定义一个父项目,但是父项目只有一个,也有可能导致父项目的pom.xml文件过大。这个时候我们引进来一个type为pom,意味着我们可以将所有的jar包打包成一个pom,然后我们依赖了pom,即可以下载下来所有依赖的jar包。

【简单来说就是把pom给你,jar包会自动被下载下来。】

5. maven工具使用(高级程序员都直接mvn package编译打包,不需要eclipse或者只把eclipse当成编辑器,就和用notepad一样)

你可以下载一个maven下来,无需安装直接解压。

然后你可以用Notepad直接写代码,或者选eclipse下面的一个项目。

代码或者项目准备好之后,

进cmd  cd到eclipse项目的目录下 比如c:\workspace\hdfs  

然后输入 c:\tools\maven\bin  mvn  package (如果你没设置mvn的环境变量,你就需要输入完整的bin目录来执行mvn)

进入到bin目录执行mvn(mvn的程序)package进行编译打包,编译大家都懂的,mvn package得到的结果是一个jar包

编译完成的.class文件将会出现在target/classe目录下,具体文件夹就是c:work hdfs \target\hdfs-0.0.1.jar。

6. mvn其他命令

mvn install package 本地仓库中安装这个jar包(暂时还不懂有啥用)

mvn clean package 清除刚才生成的项目

7. fat jar

顾名思义就是胖包,就是把一个项目的文件和他所依赖的jar都打包成一个jar。

以下是fat.jar在maven的pom.xml中的实现(暂时没时间看,用到再说)

问题
在使用“mvn package”命令编译application之后,生成的.jar文件不能直接被“java -jar”命令运行,一般都是因为: 
1. Manifest中没有主清单属性。 
2. 依赖项在.jar文件中不存在。

这两个问题可以通过在pom.xml中增加build plugin来解决。

方法1
使用maven-assembly-plugin来打包fat-jar。

假设我们的application的Main Class是practice.spring.sprice.App,那么我们需要在pom.xml中增加如下一段:

<build>
    <plugins>
        <plugin>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>3.0.0</version>
            <configuration>
                <archive>
                    <manifest>
                        <mainClass>practice.spring.sprice.App</mainClass>
                    </manifest>
                </archive>
                <descriptorRefs>
                    <descriptorRef>jar-with-dependencies</descriptorRef>
                </descriptorRefs>
            </configuration>
            <executions>
                <execution>
                    <id>make-assembly</id>
                    <phase>package</phase>
                    <goals>
                        <goal>single</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这种方法打包出来的.jar中: 
1. practice.spring.sprice.App会被作为主类。 
2. 包含所依赖的所有jar的内容(这些jar包会被解开)。

方法2
使用spring-boot-maven-plugin来打包fat-jar。 
在pom.xml中增加如下一段:

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>1.5.6.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

这种方法打包出来的.jar中: 
1. org.springframework.boot.loader.JarLauncher会被作为主类,它会自动调用应用程序中的main方法。 
2. 包含所依赖的所有的jar包(这些jar包不会被解开)
 

猜你喜欢

转载自blog.csdn.net/u011495642/article/details/83421916