有没有办法用最终的jar包装maven ejb项目的依赖项?
我通常使用单独的ear项目并将ejb作为依赖项包含在内 - 它将以这种方式自动填充lib文件夹。然而,这似乎有点浪费 - 有一个项目只是为了建立耳朵。
现在我有:
<artifactId>projectname</artifactId>
<version>1.0.0-SNAPSHOT</version>
<packaging>ejb</packaging>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<ejbVersion>3.1</ejbVersion>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<!-- without this, the datetime stamp unique id's will be appended to classpath items -->
<!-- see: http://maven.apache.org/shared/maven-archiver/examples/classpath.html#Snapshot -->
<useUniqueVersions>false</useUniqueVersions>
</manifest>
</archive>
</configuration>
</plugin>
我需要将包装类型设置为耳朵吗?我可以在独立的ejb jar中包含传递依赖吗?如果我把它设置为耳朵,我该如何配置耳塞?
提前致谢!
答案 0 :(得分:4)
Maven Shade Plugin可以使用JAR打包依赖项。它将从所有项目的依赖项中提取类/资源,并将它们打包到最终的JAR中。
这应该足以打包所有依赖项:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
</execution>
</executions>
</plugin>
然而,这样做有不利之处。
除非你有充分的理由不这样做,否则我建议你坚持建立一个EAR。
答案 1 :(得分:0)
我认为没有直接的方法可以做到这一点。相反,可以完成的是将其创建为具有ear和ejb模块的模块项目。这不是我想要的,但它比单独的项目有效并且更好。