maven打Execute jar异常

今天用maven打了一个execute jar准备放到测试环境里去跑数据,因为测试环境不是一个maven环境,我用了jar-with-dependencies插件把源码和依赖的jar文件都打进了同一个jar包中,然后又用了maven-jar-plugin插件给这个jar指定了一个入口函数的路径,两个plugin的配置如下:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.data.validate.DataValidate</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

 

<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>attached</goal>
</goals>
</execution>
</executions>
</plugin>

但是放到测试环境中执行时一直报错,错误提示如下:

no main manifest attribute

最后从stackoverflow上找到了一个解决办法,将manifest的配置放到maven-assembly-plugin插件中去,而不是放到maven-assembly-plugin中,两个插件配置如下:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<!– nothing here –>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2-beta-4</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
<archive>
<manifest>
<mainClass>com.data.validate.DataValidate</mainClass>
</manifest>
</archive>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>single</goal>
</goals>
</execution>
</executions>
</plugin>

然后在执行一切正常。

另外,再记录一下,在打jar包的时候,可以给jar包指定一个classpath以便其可以找到依赖的jar,在<manifest>下新增一个<classpathPrefix>即可,改完后配置如下:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.4</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>此处为新增
<mainClass>com.data.validate.DataValidate</mainClass>
</manifest>
</archive>
</configuration>
</plugin>

参考:http://stackoverflow.com/questions/1814526/problem-building-executable-jar-with-maven

One thought on “maven打Execute jar异常

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>