Maven执行Main方法(不依赖于classpath)及依赖查看(三)
2012-03-29 17:49
225 查看
Maven运行Main方法
在Maven使用入门(二)提供了生成含有MainClass类信息的Jar包的方法,用户也可以在项目目录下直接运行main方法(JAR包中不包含MainClass信息) 。
Maven Exec插件,Exec插件允许你运行Java类和其它脚本。它不是Maven核心插件,但它可以从Codehaus的Mojo项目得到。想要查看Exec插件的完整描述,运行 mvn help:describe -Dplugin=exec -Dfull.这会列出所有 Maven Exec 插件可用的目标。 Help 插件同时也会列出 Exec 插件的有效参数,如果你想要定制 Exec 插件的行为,传入命令行参数,你应该使用help:describe 提供的文档作为指南。 虽然 Exec
插件很有用,在开发过程中用来运行测试之外,你不应该依赖它来运行你的应用程序。 想要更健壮的解决方案,使用Maven Assembly 插件.
执行命令如下:
mvn install
mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main
Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序。 在任何其它的构建系统能够中,我们必须复制所有程序依赖到类似于 lib/ 的目录,这个目录包含一个 JAR 文件的集合。 那样,我们就必须写一个简单的脚本,在classpath 中包含我们程序的二进制代码和我们的依赖。 只有那样我们才能运行 java
org.sonatype.mavenbook.weather.Main 。 Exec 能做这样的工作是因为 Maven 已经知道如何创建和管理你的 classpath 和你的依赖。
构建一个打包好的命令行应用程序(依赖打进去)
虽然 Maven Exec 能运行程序并且产生输出,你不能就把 Maven当成是你程序运行的容器。 如果你把这个命令行程序分发给其他人,你大概就需要分发一个 JAR 或者一个 ZIP 存档文件或者 TAR 压缩过的 GZIP 文件。下面介绍了使用 Maven Assembly 插件的预定义装配描述符生成一个可分发的 JAR 文件的过程,该文件包含了项目的二进制文件和所有的依赖。Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件。 你可以使用 Maven Assembly
插件以你希望的任何形式来装配输出,只需定义一个自定义的装配描述符。 后面的章节我们会说明如何创建一个自定义装配描述符,为 SimpleWeather 应用程序生成一个更复杂的存档文件。 本章我们将会使用预定义的 jarwith-dependencies 格式。 要配置 Maven Assembly 插件, 我们需要在 pom.xml 中的build 配置中添加如下的 plugin 配置。
添加好这些配置以后,你可以通过运行 mvn assembly:assembly 来构建这个装配。mvn install assembly:assembly
在 target/simple-weather-1.0-jar-with-dependencies.jar 装配好之后, 我们可以在命令行重新运行 Main 类。在你项目的基础目录下运行以下命令:
java -cp simple-weather-1.0-jar-with-dependencies.jar org.sonatype.mavenbook.weather
jar-with-dependencies 格式创建一个包含所有 simple-weather 项目的二进制代码以及所有依赖解压出来的二进制代码的 JAR 文件。
查看依赖
dependency:resolve(Dependency 插件将会打印出最终的你项目编译所基于的所有依赖的组合)
mvn dependency:tree(依赖层次树)
mvn install -X 如果你还不满足,或者想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行,从调试输出我们看到一些依赖管理系统工作的内部信息。从该输出你能看到 Maven 正在创建一个依赖图,排除重复,解决不同版本之间的冲突。 如果你的依赖有问题,通常在dependency:tree 所生成的列表基础上更深入一点会有帮助;开启调试输出允许你看到Maven 工作时的依赖机制。
在Maven使用入门(二)提供了生成含有MainClass类信息的Jar包的方法,用户也可以在项目目录下直接运行main方法(JAR包中不包含MainClass信息) 。
Maven Exec插件,Exec插件允许你运行Java类和其它脚本。它不是Maven核心插件,但它可以从Codehaus的Mojo项目得到。想要查看Exec插件的完整描述,运行 mvn help:describe -Dplugin=exec -Dfull.这会列出所有 Maven Exec 插件可用的目标。 Help 插件同时也会列出 Exec 插件的有效参数,如果你想要定制 Exec 插件的行为,传入命令行参数,你应该使用help:describe 提供的文档作为指南。 虽然 Exec
插件很有用,在开发过程中用来运行测试之外,你不应该依赖它来运行你的应用程序。 想要更健壮的解决方案,使用Maven Assembly 插件.
执行命令如下:
mvn install
mvn exec:java -Dexec.mainClass=org.sonatype.mavenbook.weather.Main
Exec 插件让我们能够在不往 classpath 载入适当的依赖的情况下,运行这个程序。 在任何其它的构建系统能够中,我们必须复制所有程序依赖到类似于 lib/ 的目录,这个目录包含一个 JAR 文件的集合。 那样,我们就必须写一个简单的脚本,在classpath 中包含我们程序的二进制代码和我们的依赖。 只有那样我们才能运行 java
org.sonatype.mavenbook.weather.Main 。 Exec 能做这样的工作是因为 Maven 已经知道如何创建和管理你的 classpath 和你的依赖。
构建一个打包好的命令行应用程序(依赖打进去)
虽然 Maven Exec 能运行程序并且产生输出,你不能就把 Maven当成是你程序运行的容器。 如果你把这个命令行程序分发给其他人,你大概就需要分发一个 JAR 或者一个 ZIP 存档文件或者 TAR 压缩过的 GZIP 文件。下面介绍了使用 Maven Assembly 插件的预定义装配描述符生成一个可分发的 JAR 文件的过程,该文件包含了项目的二进制文件和所有的依赖。Maven Assembly 插件是一个用来创建你应用程序特有分发包的插件。 你可以使用 Maven Assembly
插件以你希望的任何形式来装配输出,只需定义一个自定义的装配描述符。 后面的章节我们会说明如何创建一个自定义装配描述符,为 SimpleWeather 应用程序生成一个更复杂的存档文件。 本章我们将会使用预定义的 jarwith-dependencies 格式。 要配置 Maven Assembly 插件, 我们需要在 pom.xml 中的build 配置中添加如下的 plugin 配置。
<build> <plugins> <plugin> <artifactId>maven-assembly-plugin</artifactId> <configuration> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> </configuration> </plugin> </plugins> </build>
添加好这些配置以后,你可以通过运行 mvn assembly:assembly 来构建这个装配。mvn install assembly:assembly
在 target/simple-weather-1.0-jar-with-dependencies.jar 装配好之后, 我们可以在命令行重新运行 Main 类。在你项目的基础目录下运行以下命令:
java -cp simple-weather-1.0-jar-with-dependencies.jar org.sonatype.mavenbook.weather
jar-with-dependencies 格式创建一个包含所有 simple-weather 项目的二进制代码以及所有依赖解压出来的二进制代码的 JAR 文件。
查看依赖
dependency:resolve(Dependency 插件将会打印出最终的你项目编译所基于的所有依赖的组合)
mvn dependency:tree(依赖层次树)
mvn install -X 如果你还不满足,或者想要查看完整的依赖踪迹,包含那些因为冲突或者其它原因而被拒绝引入的构件,打开 Maven 的调试标记运行,从调试输出我们看到一些依赖管理系统工作的内部信息。从该输出你能看到 Maven 正在创建一个依赖图,排除重复,解决不同版本之间的冲突。 如果你的依赖有问题,通常在dependency:tree 所生成的列表基础上更深入一点会有帮助;开启调试输出允许你看到Maven 工作时的依赖机制。
相关文章推荐
- 查看linux内核模块依赖关系的三种方法
- Linux查看程序、进程的依赖库的方法
- Android 查看依赖的方法,妈妈再也不用担心jar包冲突找不到了
- TensorFlow安装方法三【Anaconda方式下查看TensorFlow版本选择性安装】(Windows10 64位 cpu and gpu)
- Java线程死锁查看分析方法
- phpMyAdmin查看创建表SQL语句的方法
- linux iftop查看流量的方法
- Visual Studio2008环境下查找C#中方法的“查看所有引用”
- Linux下查看内存使用情况的方法总结
- 查看一个可执行文件或者库的依赖库
- Linux环境变量的设置和查看方法 http://soft.chinabyte.com/os/169/11412169.shtml
- ORACLE--数据库查看执行计划的方法
- 查看ASP源代码的方法
- 查看回调函数执行在那个线程中的方法
- Mysql Binlog快速遍历搜索记录及binlog数据查看的方法
- 运行jar包找不到依赖包的解决方法
- IDEA 循环依赖解决方法
- VC6.0和VS2005查看查看C或者C++文件汇编代码的方法
- Android Studio导入第三方jar包或依赖工程的方法
- Eclipse中指定第三方包JAR和类路径CLASSPATH的几个方法