Maven不会导出可运行的JAR

时间:2016-03-23 01:08:39

标签: eclipse maven executable-jar

所以我在eclipse中有一个小的maven项目,如果我导出一个可运行的JAR并选择:

  • 将所需的库包装到生成的JAR中

它工作正常。

我应该注意到我的一个JAR是maven控制的(Univocity),另一个是本地Oracle JDBC JAR。我希望在我的可运行JAR包中包含这两个,这样我就可以将单个JAR部署到生产环境并使用单个命令执行它。

在我的POM中,我添加了 maven-assembly-plugin ,当我使用mvn包时,我得到了一个带有Univocity库的JAR,但它跳过了Oracle JAR。

如何才能将Oracle JAR捆绑到最终输出中?

这是POM:

<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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>au.com.myco</groupId>
  <artifactId>MyCoOracleExtractor</artifactId>
  <version>0.0.4</version>
  <packaging>jar</packaging>

  <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <univocity.version>2.0.0</univocity.version>
  </properties>  

  <dependencies>
    <dependency>
      <groupId>oracle.jdbc</groupId>
      <artifactId>ojdbc6</artifactId>
      <version>11.2.0.4</version>
      <type>jar</type>
      <scope>system</scope>
      <systemPath>${project.basedir}/lib/ojdbc6-11.2.0.4.jar</systemPath>
    </dependency>
    <dependency>
      <groupId>com.univocity</groupId>
      <artifactId>univocity-parsers</artifactId>
      <version>${univocity.version}</version>
      <type>jar</type>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.3</version>
        <configuration>
          <source>${maven.compiler.source}</source>
          <target>${maven.compiler.target}</target>
        </configuration>
      </plugin>
        <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
        <executions>
                <execution>
                  <id>assembly:package</id>
                  <phase>package</phase>
                  <goals>
                <goal>single</goal>
            </goals>
                  <configuration>
                    <archive>
                      <manifest>
                        <mainClass>au.com.myco.MyCoOracleExtractor</mainClass>
                      </manifest>
                    </archive>
                    <descriptorRefs>
                      <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                  </configuration>
          </execution>
        </executions>
        </plugin>
    </plugins>
  </build>
</project>

我确实尝试使用 maven-dependency-plugin ,但它没有解决将它们捆绑到单个JAR中的问题。

1 个答案:

答案 0 :(得分:0)

你必须手动安装它,因为Oracle没有让maven获得任何jar:所以你必须使用命令mvn install:install -Dfile=<path to file> ...手动安装它,并像任何其他依赖项一样将它放在你的pom.xml中<SystemPath>就像这样:

<dependencies>
    <dependency>
      <groupId>oracle.jdbc</groupId>
      <artifactId>ojdbc6</artifactId>
      <version>11.2.0.4</version>
    </dependency>
</dependecies>

在我的情况下:当我想在tomcat中部署我的应用程序时:我必须将jar ojdbc6直接放在tomcat的lib文件夹中。