用 mvn package 打包及运行 MaxTemperature 程序

来源:互联网 发布:app软件下载安装 编辑:程序博客网 时间:2024/06/14 10:15

在 http://blog.csdn.net/xiruanliuwei/article/details/78619331 的基础上,又重现实现了一遍 MaxTemperature 的例子,

代码位置: https://github.com/xiruanliuwei/HelloHadoop  ,截止的 commit: 

commit 2d02fb636213706f504d42a7728f62c2de2de240 (HEAD ->master,origin/master,origin/HEAD)

Author: Wei.Liu <xiruanliuwei@163.com>

Date:   Mon Nov 27 23:52:29 2017 +0800


    Correct the import statement of class Text


在 pom.xml 中增加了部分内容,主要是 maven-jar-plugin 插件,通过 mvn package 生成最终的 App.jar 文件:


WeiLius-iMac:HelloHadoop Wei.Liu$ pwd

/Users/Wei.Liu/Codes/Hadoop/HelloHadoop

WeiLius-iMac:HelloHadoop Wei.Liu$ ls

README.md pom.xmlshell_commands srctest-data.xml

WeiLius-iMac:HelloHadoop Wei.Liu$ mvn package

[INFO] Scanning for projects...

[WARNING

[WARNING] Some problems were encountered while building the effective model for com.hellohadoop:HelloHadoop:jar:1.0-SNAPSHOT

[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-compiler-plugin is missing. @ line 38, column 11

[WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-jar-plugin is missing. @ line 46, column 13

[WARNING

[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.

[WARNING

[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.

[WARNING

[INFO

[INFO]------------------------------------------------------------------------

[INFO]Building HelloHadoop 1.0-SNAPSHOT

[INFO]------------------------------------------------------------------------

[INFO

[INFO]--- maven-resources-plugin:2.6:resources(default-resources) @HelloHadoop ---

[INFO] Using 'UTF-8' encoding to copy filtered resources.

[INFO] skip non existing resourceDirectory /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/main/resources

[INFO

[INFO]--- maven-compiler-plugin:3.1:compile(default-compile) @HelloHadoop ---

[INFO] Changes detected - recompiling the module!

[INFO] Compiling 3 source files to /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/target/classes

[WARNING] /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/main/java/com/hellohadoop/App.java: /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/main/java/com/hellohadoop/App.java uses or overrides a deprecated API.

[WARNING] /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/main/java/com/hellohadoop/App.java: Recompile with -Xlint:deprecation for details.

[INFO

[INFO]--- maven-resources-plugin:2.6:testResources(default-testResources) @HelloHadoop ---

[INFO] Using 'UTF-8' encoding to copy filtered resources.

[INFO] skip non existing resourceDirectory /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/test/resources

[INFO

[INFO]--- maven-compiler-plugin:3.1:testCompile(default-testCompile) @HelloHadoop ---

[INFO] Changes detected - recompiling the module!

[INFO] Compiling 1 source file to /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/target/test-classes

[INFO

[INFO]--- maven-surefire-plugin:2.12.4:test(default-test) @HelloHadoop ---

[INFO] Surefire report directory: /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/target/surefire-reports


-------------------------------------------------------

 T E S T S

-------------------------------------------------------

Running com.hellohadoop.AppTest

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.003 sec


Results :


Tests run: 1, Failures: 0, Errors: 0, Skipped: 0


[INFO

[INFO]--- maven-jar-plugin:2.4:jar(default-jar) @HelloHadoop ---

[INFO] Building jar: /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/App.jar

[INFO]------------------------------------------------------------------------

[INFO]BUILD SUCCESS

[INFO]------------------------------------------------------------------------

[INFO] Total time: 8.565 s

[INFO] Finished at: 2017-11-28T22:30:19+08:00

[INFO] Final Memory: 25M/171M

[INFO]------------------------------------------------------------------------

WeiLius-iMac:HelloHadoop Wei.Liu$ ls

App.jar README.mdpom.xml shell_commandssrc targettest-data.xml


在项目根目录下,调用 mvn package 命令,如果源码中的 *.java 文件还未编译生成相应的 *.class 文件,则先调用 maven-compiler-plugin 编译相应的 *.java 源码文件,生成 *.class 文件:

[INFO]--- maven-compiler-plugin:3.1:compile(default-compile) @HelloHadoop ---

[INFO] Changes detected - recompiling the module!

[INFO] Compiling 3 source files to /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/target/classes

[WARNING] /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/main/java/com/hellohadoop/App.java: /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/main/java/com/hellohadoop/App.java uses or overrides a deprecated API.

[WARNING] /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/src/main/java/com/hellohadoop/App.java: Recompile with -Xlint:deprecation for details.


生成的 *.class 文件,会被调用的 maven-jar-plugin 打包生成 App.jar:

[INFO

[INFO]--- maven-jar-plugin:2.4:jar(default-jar) @HelloHadoop ---

[INFO] Building jar: /Users/Wei.Liu/Codes/Hadoop/HelloHadoop/App.jar


App.jar 中的 App 这个名字是在 pom.xml 中指定的,这个名字可以改变,生成的 jar 文件,也会随着改变,例如 AppKKK.jar 等:

<build>

  <finalName>App</finalName>


mvn package 成功执行后,生成 App.jar 文件,执行 App.jar 文件:

WeiLius-iMac:HelloHadoop Wei.Liu$ ls

App.jar README.mdpom.xml shell_commandssrc targettest-data.xml

WeiLius-iMac:HelloHadoop Wei.Liu$ hadoop jar App.jar  com.hellohadoop.App test-data.xml  output

命令执行完成后:

WeiLius-iMac:HelloHadoop Wei.Liu$ ls

App.jar README.mdoutput pom.xmlshell_commands srctarget test-data.xml

WeiLius-iMac:HelloHadoop Wei.Liu$ cd output/

WeiLius-iMac:output Wei.Liu$ ls

_SUCCESS part-r-00000

WeiLius-iMac:output Wei.Liu$ cat _SUCCESS 

WeiLius-iMac:output Wei.Liu$ cat part-r-00000 

1949 111

1950 22


除了上面的执行方式,还可以直接运行入口 .class 文件 App.class :

WeiLius-iMac:HelloHadoop Wei.Liu$ pwd

/Users/Wei.Liu/Codes/Hadoop/HelloHadoop

WeiLius-iMac:HelloHadoop Wei.Liu$ hadoop com.hellohadoop.App test-data.xml  output

注意: 直接在项目根目录下运行,不需要切换到 target/.../... 的 *.class 文件所在的目录
执行的结果与前面命令的结果完全相同。

问题: 运行 *.class 文件时,要切换到哪个目录?怎么写 package name?It is really confusing...





原创粉丝点击