Сборка Maven: включает JDBC - PullRequest
       19

Сборка Maven: включает JDBC

1 голос
/ 19 октября 2011

Я пытаюсь создать один файл .jar из проекта Maven, который включает все необходимые зависимости. Поэтому .jar должен работать на компьютере с отсутствующими библиотеками.

В моем pom.xml:

   <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.15</version>
        <exclusions>
            <exclusion>
                <groupId>com.sun.jmx</groupId>
                <artifactId>jmxri</artifactId>
            </exclusion>
            <exclusion>
                <groupId>com.sun.jdmk</groupId>
                <artifactId>jmxtools</artifactId>
            </exclusion>
            <exclusion>
                <groupId>javax.jms</groupId>
                <artifactId>jms</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hsqldb</groupId>
        <artifactId>hsqldb</artifactId>
        <version>2.2.4</version>
    </dependency>
  </dependencies>

В части pom.xml я использую плагин Assembly:

  <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptors>
            <descriptor>src/assemble/exe.xml</descriptor>
          </descriptors>
          <archive>
            <manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
          </archive>
        </configuration>
  </plugin>

Файл "src / assembly / exe.xml":

<assembly>
  <id>exe</id>
  <formats>
    <format>jar</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory></outputDirectory>
      <outputFileNameMapping></outputFileNameMapping>
      <unpack>true</unpack>
      <scope>runtime</scope>
      <includes>
        <include>log4j:log4j</include>
        <include>hsqldb:hsqldb</include>
      </includes>
    </dependencySet>
  </dependencySets>
  <fileSets>
    <fileSet>
      <directory>target/classes</directory>
      <outputDirectory></outputDirectory>
    </fileSet>
  </fileSets>
</assembly>

Весь процесс сборки работает безупречно (с использованием Eclipse и m2e). Я упомянул следующую строку в выводе:

[INFO] Reading assembly descriptor: src/assemble/exe.xml
[WARNING] The following patterns were never triggered in this artifact inclusion filter:
o  'hsqldb:hsqldb' 

Вызов получившегося .jar с java -jar result.jar драйвер JDBC HSQLDB не может быть загружен / не найден. Поскольку на консоли есть нормальный (System.out.println), а также вывод log4j , я подозреваю, что отсутствуют только библиотеки hsqldb.

Как их можно включить в .jar с плагином сборки Maven? (Моя система: Eclipse Indigo, m2e 1.0.100.20110804, Maven 3.0.2, Java 1.6.0.26)

1 Ответ

3 голосов
/ 19 октября 2011

Обратите внимание, что имя артефакта драйвера JDBC HSQLDB будет org.hsqldb:hsqldb и , а не hsqldb:hsqldb, как вы написали в exe.xml.Исправь это!

...