• (一)Maven之使用入门


    今天是端午节哦,昨天大学同学举个了会。鱼头泡饼贼拉香,嗯哼,有点跑题了;之后去了同学家里坐了坐;发现同我有一样的书,即:《maven实战》;记得是从二手网店淘到的,已经买了有小半年,还只看了个目录; 打算用个端午的一天时间给它啃下来。。至此,立了一个小Flag...

    image.png

    目录

    maven的规范:

    默认情况下:

    1. 项目主代码位于 src/main/java 目录下,,编译后在target/classes下
    2. 项目测试代码位于 src/test/java ,编译后在target/test-class下。
    3. Maven构建的所有输入都在target/目录下。
    4. 自动访问Maven的中央仓库, http://repol.maven.org/maven2
    5. 默认打包类型jar, 主代码打包根据 artifact-version.jar规则命名打包输出到 target/目录下。
    6. 在项目根目录下放置pom.xml

    注: 如pom.xml中的scope(依赖的范围),默认值是compile; 如果你看到指定为test,即:该依赖只对测试代码有效,若在主代码中使用,会造成编译错误。

    mvn clean compile

    背后的执行过程:

    • 先执行clean:clean任务,展出target/目录。
    • 再执行resources:resources任务,处理项目资源。
    • 最后执行compiler:compile任务,将项目主代码编译至target/classes目录。
      注:上文提及的如 clean:clean ...指的是Maven的插件和目标,eg: compiler:compile是compiler插件的complie目标。
    mvn clean test

    背后的执行过程:

    注: 在执行test之前,Maven先自动执行项目主资源处理、主代码编译、测试资源处理、测试代码编译等工作,是就是Maven生命周期的特征。即,会先执行mvn clean compile背后的命令操作。

    • 先执行resources:testResources任务
    • 再执行compiler:testCompile任务
    • 最后执行surefire:test任务,执行测试并输出测试报告。
      注:上文提及的如 clean:clean ...指的是Maven的插件和目标,eg: compiler:compile是compiler插件的complie目标。
    mvn clean package

    背后的执行过程:
    执行jar:jar任务,负责打jar包。

    mvn clean install

    作用:将项目输出的jar包安装到Maven本地仓库中,供其他Maven项目使用。

    答疑解惑模块

    1.为什么pom.xml都需要手动配置compiler插件呢?

    例如:
    <project>
    ...
    <bulid>
        <plugins>
            <plugin>
                <groupId> org.apache.maven.plugins
                </groupId>
                <artifactId>
                maven-compiler-plugin
                </artifactId>
                <configuration>
                    <source> 1.8  </source>
                    <target> 1.8 </target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
    </project>
    

    解: 由于历史原因,Maven的核心插件之一compiler插件默认只支持Java 1.3,因此需要配置该插件使其支持当前的JDK版本。

    2.如何生成可执行的jar文件?

    注: 默认生成的jar包不能直接运行,因为没有将main方法的类信息添加到manifest中[在jar文件中META-INF/MANIFEST.MF文件中没有Main-Class的配置]。需要借助maven-shade-plugin插件。

    <plugin>          
            <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-shade-plugin</artifactId>
           <version>3.1.1</version>
           <executions>
             <execution>
               <phase>package</phase>
               <goals>
                 <goal>shade</goal>
               </goals>
               <configuration>
                     <!-- 打成可执行的jar包 的主方法入口-->  
                     <transformer  implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">     
                     <mainClass>com.golden.MainTest</mainClass>       
                     </transformer>
               </configuration>
             </execution>
           </executions>
     </plugin>
    

    使用Archetype生成项目骨架

    mvn archetype:generate

    背后的执行过程:

    • Maven2并不建议用改命令,这可能不是安全的,Maven2会自动下载最新版本Archetype插件,可能不稳定。而Maven3会自动下载最新最稳定的版本,所以可以放心使用。Maven2建议手动指定,命令格式为:mvn groupId:artifactId:version:goal[插件目标], eg:mvn org.apache.maven.plugins:maven-archetype-plugin:2.0-alpha-5:generate
  • 相关阅读:
    (转)UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)
    (转)使用 Document!X 为自己的dll生成一个漂亮的说明文档
    我的游戏学习日志42——游戏机制设计(2)
    我的游戏学习日志41——游戏机制设计(1)
    我的游戏学习日志40——游戏概念设计(2)
    我的游戏学习日志39——游戏概念设计(1)
    我的游戏学习日志38——游戏性的评估标准(2)
    我的游戏学习日志37——游戏性的评估标准(1)
    我的游戏学习日志36——游戏结构(小结)
    我的游戏学习日志35——游戏结构(4)
  • 原文地址:https://www.cnblogs.com/zhaojinxin/p/10994624.html
Copyright © 2020-2023  润新知