2013-02-22 6 views
0

Как создать исполняемую банку с зависимостями в подпапке в банке с помощью Maven?Как создать исполняемую банку с зависимостями в подпапке в банке с помощью Maven?

Следующий pom.xml сделает исполняемую банку с зависимостями в корне, но что, если бы я хотел, чтобы все зависимости в подпапке в банке были настолько легкими, если кто-то захотел бы посмотреть в банке. Как я могу изменить следующий файл pom.xml:

<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>org.xxxx</groupId> 
    <artifactId>DRBP</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>DRBP</name> 

    <url>http://maven.apache.org</url> 


    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <java-version>1.7</java-version> 
     <springframework-version>3.2.1.RELEASE</springframework-version> 
    </properties> 

    <dependencies> 

      <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
<!-- 
    <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${springframework-version}</version> 
     </dependency> 
--> 

<dependency> 
    <groupId>org.springframework</groupId> 
     <artifactId>spring-jdbc</artifactId> 
      <version>${springframework-version}</version> 
      </dependency> 

<dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1</version> 
     </dependency> 

     <dependency> 
      <groupId>javax.mail</groupId> 
      <artifactId>mail</artifactId> 
      <version>1.4.5</version> 
     </dependency> 

     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib</artifactId> 
      <version>2.2.2</version> 
     </dependency> 

     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>5.1.21</version> 
     </dependency> 


     <dependency> 
      <groupId>net.sf.jt400</groupId> 
      <artifactId>jt400-full</artifactId> 
      <version>4.7.0</version> 
     </dependency> 


     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.7</version> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 


    <build> 
     <finalName>DRBP</finalName> 

     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <executions> 
        <execution> 
         <goals> 
          <goal>attached</goal> 
         </goals> 
         <phase>package</phase> 
         <configuration> 
          <descriptorRefs> 
           <descriptorRef>jar-with-dependencies</descriptorRef> 
          </descriptorRefs> 
          <archive> 
           <manifest> 
            <mainClass>org.xxxx.batch.MainBatch</mainClass> 
           </manifest> 
          </archive> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</project> 
+2

Вы не должны делать это. В баночке не должно быть других банок. Для того, чтобы использовать такую ​​банку, необходим специальный загрузчик классов, и это вызывает больше проблем, чем решает. Если вы хотите иметь возможность поставить один артефакт, застегните банки. –

+0

Можете ли вы указать мне пример – SJS

+0

Пример чего? Zip-файл, содержащий файлы jar? –

ответ

1

Вы хотите посмотреть на Maven Shade плагин.

Если вы хотите полный веб-приложение в одном банке есть несколько вариантов:

+0

Ты избил меня. +1 для Maven Shade. – Aurand

Смежные вопросы