我使用了 maven 程序集包来创建一个单一的整体 jar。包括 datanucleus 包,但我收到错误,因为我没有维护 OSGI 结构(plugins.xml 和 META-INF/META-INF.MD)。stackoverflow([question]: Datanucleus, JDO and executable jar - how to do it? ) 上的答案没有提供有关如何创建单个可部署 jar 的答案。
有谁知道我可以使用哪些 Maven 指令来确保 OSGI 结构?
我使用了 maven 程序集包来创建一个单一的整体 jar。包括 datanucleus 包,但我收到错误,因为我没有维护 OSGI 结构(plugins.xml 和 META-INF/META-INF.MD)。stackoverflow([question]: Datanucleus, JDO and executable jar - how to do it? ) 上的答案没有提供有关如何创建单个可部署 jar 的答案。
有谁知道我可以使用哪些 Maven 指令来确保 OSGI 结构?
因此,问题在于将所有内容打包到一个整体 jar 中是 OSGI 结构会被其他 jar 的 OSGI 结构覆盖。整体 jar 的好处是有一个文件可以推送到服务器,但不是必需的(因为我使用 capistrano 推送到服务器)
相反,将 jars 复制到最终的构建目录中会更容易。Heroku 的 Java 设置有一个完美的例子:
https://devcenter.heroku.com/articles/java
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>helloworld</artifactId>
<dependencies>
<dependency>
<groupId>org.eclipse.jetty</groupId>
<artifactId>jetty-servlet</artifactId>
<version>7.6.0.v20120127</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals><goal>copy-dependencies</goal></goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>