Maven 工程生成可执行的 JAR 包

远离 Maven 工程有些时日了,也不知道当前还是否在流行 Maven 管理工程与依赖,当前类似工具有 Ant+Ivy, Grunt, sbtGradle。Web 工程的输出发布包没什么好说的,因为 <packaging>war</packaging>,所以 mvn package 出来的 WAR 包里就有站点运行的所有内容了,用到的依赖会在 WEB-INF/lib 目录下列着。

而对于那些 <packaging>jar</packaging> 的工程,用 mvn package 只会生成一个 JAR 包,它所依赖的各个类库仍然分散在本地仓库中,而我们的发布包应该包含这些第三方依赖的。

假定,有一个 GoSSH  Maven 工程,设定的版本是 0.0.1,它依赖了 jsch-0.1.50, commons-cli-1.3-SNAPSHOT,想要发布的包有如下布局

GoSSH-0.0.1.jar
lib
        jsch-0.1.50.jar
        commons-cli-1.3-20140216.032825-101.jar     #这里的 revision 号是随 SNAPSHOT 动态而定的

并且在 GoSSH-0.0.1.jar 中的 META-INF/MANIFEST.MF 文件中指定了 阅读全文 >>

类别: Java/JEE. 标签: . 阅读(2,218). 评论(0) »

Maven使用第三方jar文件的两种方法

在Maven中,使用第三方库一般是通过pom.xml文件中定义的dependency从远程repository中下载该库。但是如果库文件是公司内部的库,或者在本地而不能通过远程repository下载,这种情况下,有两种方法可以满足需求。

方法一:

将本地的jar文件安装到本地repository中,具体步骤如下:
1、准备好本地的jar文件
2、使用如下命令安装jar文件
      mvn install:install-file -Dfile=abc.jar
     -DgroupId=com.mycompany.myproduct -DartifactId=abc
     -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true 
    其中,-Dfile制定jar文件的位置。执行完该命令后,会在本地repository(通常是$HOME\.m2目录)中出现一个目录(com),在其下会有一个abc-1.0.jar的文件和一个自动产生的pom文件。 阅读全文 >>

类别: Java/JEE. 标签: . 阅读(272). 评论(1) »

用 DbUnit 执行 export 导出数据时报 MySQLSyntaxErrorException

我是借助于 dbunit-maven-plugin 来使用 DbUnit 的,数据库是 MySql,在使用 mvn dbunit:export 指令时,总报错:

Embedded error: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc from unmi_test_table order by Id' at line 1

若是加上 -e 或 -X 参数,如 mvn dbunit:export -e 时可以看到更详细的异常信息:

Caused by: org.apache.maven.plugin.MojoExecutionException: Error executing export 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(595). 评论(1) »

用 dbunit-maven-plugin 来管理你的测试数据

单元测试有人写过,也有人没做过,数据库的 dbunit 的用的人应该更少了,它可以用来给你做测试准备数据。一般我们做测试会在一个测试数据库中不停的测,自然会累积许多垃圾数据,给单元测试会造成不便,功能测试倒无太紧要。如果我们想在单元测试的时候有一份干净的数据,有个做法是搞个备用的数据库,测试前导到测试库的,或用某些数据库的导入导出功能。

这里我们来看 dbunit 怎么实现准备测试数据的,它可以用来导出数据库数据到数据文件中,从数据文件中导入干净的数据到数据库中,比较数据库与数据文件、或增量的插入记录等等。 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(1,299). 评论(0) »

Maven 开发者手册翻译进行中......

看到 Maven 不断的演进, 著名的  Appfuse 也摒弃了 Ant 而采用了 Maven 作为它的构建管理工具,各个 Java IDE 对于 Maven 的支持也是纷纷上马,所以急迫的感觉对于 Maven 的出现是不容忽视了。Ant 纵然是能满足于我们的需求,不过 Ant 的 build.xml 脚本总那么臃肿不堪,不利于阅读。

而 Maven 与 Ant 同出一族,为 Apache 门下的师兄弟。既然 Apache 会再发明这样一个新轮子,相比于 Ant 确有它的许多独到之处。Maven 依赖了 ant-x.x.x 包,但要说是建立在 Maven 之上的话恐有不太合适。

关于 Maven 与 Ant 之间比较的文章在网上能找到不少,如 maven和ant的比较。具体的不细说,略表几个 Maven 关键之处:1. 对依赖包的处理十分优雅;2. 有大量可用的插件支持;3. 便于与其他工具的支持;4. 适合于多项目的开发。本人也是接触不久,还有许多有待发掘。 阅读全文 >>

类别: Java/JEE. 标签: , . 阅读(37). 评论(0) »

Maven 1 的 Unknown error downloading; status code was: 301 错误解决

现在早已是 Maven 2 了,可还是有机会用了一下 Maven 1,所用的版本是 Maven 1.0.2,刚开始尝试的时候出现以下两个问题:

1. 执行 maven genapp 时产生如下异常:

???????? commons-jelly-tags-interaction-20030211.143817.jar????
Error retrieving artifact from [http://www.ibiblio.org/maven/commons-jelly/jars/commons-jelly-tags-interaction-20030211.143817.jar]: java.net.ConnectException: Connection timed out: connect
?????? commons-jelly-tags-interaction-20030211.143817.jar ?????§°???
???????????????±???????¨??????????

commons-jelly-tags-interaction-20030211.143817.jar 阅读全文 >>

类别: Java/JEE. 标签: . 阅读(160). 评论(0) »