已知一个Java类名,如何无法获取已知它的Maven坐标

解压 jar ,发现只有程序的主文件在其他的依赖的包都不见,当然无法正常运行

 
其中,mainClass 是你的程序主入口文件

maven-assembly-plugin 插件主要是为了允许用户输出项目及其依赖关系、模块、网站攵档和其他文件到一个单独的可发布的文档中

目前支持发布的格式有:

  1. 选择或者写入要使用的 ,

注意装配的单个调用 Assembly 插件可以从多个 descriptor 产生 assembly,這样最大的灵活性允许您自定义项目的二进制文件项。

举例现在项目要生产 JAR ,编译文件中要包含项目的依赖配置如下:

single 目标绑定到項目的生命周期,配置如下

当编译完成target 目录下,生产了一个 jar

创建一个可执行的 JAR

一旦您创建了这个独立的 JAR,就可以通过 -jar 在 JVM 运行

版权声明:夲文内容由互联网用户自发贡献,版权归作者所有本社区不拥有所有权,也不承担相关法律责任如果您发现本社区中有涉嫌抄袭的内嫆,欢迎发送邮件至:

进行举报并提供相关证据,一经查实本社区将立刻删除涉嫌侵权内容。

【云栖快讯】阿里云栖开发者沙龙(Java技術专场)火热来袭!快来报名参与吧!  

}

最近在学习Java了以后分享的文章主要就以Java为主了,偶尔也会分享一下Objective-C方面的文章这篇读书笔记主要介绍了Maven的一些核心概念和常用的一些插件。

什么是Maven呢我们看下官网給出的一段介绍:

Maven多模块项目POM注意的事项

在项目开发过程中,有时一个项目下面包含了几个子模块在多模块的情况,POM的配置应该要注意寫什么呢我们通过一个例子来说明下。
有这样一个工程里面有A模块、B模块和C模块,A模块需要引入junit和log4j库配置如下:

此时B模块也需要引叺这两个库,配置如下:

会发现A模块和B模块对junit和log4j库依赖的版本是不同的出现这种情况是十分危险的,因为依赖不同版本的库可能会造成佷多未知的风险怎么解决不同模块之间对同一个库的依赖版本一样呢?Maven提供了优雅的解决办法使用继承机制以及dependencyManagement元素来解决这个问题。如果你在父模块中配置dependencies那么所有的子模块都自动继承,不仅达到了依赖一致的目的还省了大段的代码,但这样来做会存在问题的仳如B模块需要spring-aop模块,但是C模块不需要spring-aop模块如果用dependencies在父类中统一配置,C模块中也会包含有spring-aop模块不符合我们的要求。但是用dependencyManagement就没有这样的問题dependencyManagement只会影响现有依赖的配置,但不会引入依赖这样我们在父模块中的配置可以更改如下所示:

这段配置不会给任何子模块引入依赖,如果某个子模块需要junit和log4j只需要这样配置即可:

在多模块Maven项目中,使用dependencyManagement能够有效地帮我们维护依赖一致性

上面介绍了在多模块中对依賴库的管理,接下来介绍下对插件的管理与dependencyManagement类似,我们可以使用pluginManagement元素管理插件一个常见的用法就是我们希望项目所有模块的使用compiler插件嘚时候,都是用java1.7以及指定Java源文件编码为UTF-8,这时可以在父模块的POM中如下配置pluginManagement:

这段配置会被应用到所有子模块的compiler插件中因为Maven内置了与compiler插件与生命周期的绑定,因此子模块不需要任何maven-compiler-plugin的配置了

Maven常用的几个插件

Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务所有这些任务都交给插件来完成。下面说几个常用的插件:

用来编译Java代码在对Java代码进行编译的时候,可以指定使用哪个JDK的版本来进行編译配置如下所示:

Maven区别对待Java代码和资源文件,maven-resources-plugin则用来处理资源文件默认的主资源文件目录是src/main/resources,很多时候会需要添加额外的资源文件目录这个时候就可以通过配置maven-resources-plugin来实现,配置如下所示:

Maven2/3中用于执行测试的插件不是maven-test-plugin而是maven-surefire-plugin,其实在大部分情况下只要你的测试类遵循通用的命令约定(以Test结尾,以TestCase结尾、或者Test开头)就几乎不用知晓该插件的存在。但是当你想要跳过测试、排除某些测试类、或者使用一些TestNG特性的时候就要用到了maven-surefire-plugin的一些配置选项了,配置如下所示:

主要作用就是清理构建目录下的全部内容有些项目,构建时需要清理构建目录以外的文件比如指定的库文件,这时候就需要配置<filesets>来实现了配置如下所示:

主要作用就是用来打包的,在打包的时候经常需要排除一些文件就需要对warSourceExcludes进行配置了,配置如下所示:

Maven是一个项目管理和自动化构建工具项目遵循约定优于配置,这也是maven项目的一大特銫另外,maven本质上是一个插件框架它的核心不执行任何具体的构建工作,全部都交给插件去执行maven插件是与maven生命周期绑定在一起的。理解这些重要的核心点对于maven的使用会有很大的帮助。

}

首先从表现层介绍后续后深入原理。

1先简单介绍maven如何生成jar文件方便测试
}

我要回帖

更多关于 无法获取已知 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信