2014-03-06 83 views
0

在使用下面的命令運行執行maven的主類的Java主程序:運行使用maven

mvn exec:java -Dexec.mainClass="com.xoxo.amqtest.SubscriberDriver" 

我認爲所有的罐子必須從行家回購有所回升。但是,它會拋出異常。

java.lang.NoClassDefFoundError: com/xoxo/infra/protectedpkg/ProtectedPackageLoadException 

這個maven項目在eclipse中運行良好。有什麼辦法可以指定行家挑選,而不是將所有的依賴像下面

java -cp ./:./target/amq-subscriber-1.0.0-SNAPSHOT-jar-with-dependencies.jar:/x/home/stvu/.m2/repository/com/xoxo/submodule/infra-jsse-2.0.1.jar com.xoxo.amqtest.SubscriberDriver 

編輯從所有的maven回購的依賴關係:

<?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/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <parent> 
     <groupId>com.xoxox.infra</groupId> 
     <artifactId>infra-parent</artifactId> 
     <version>13.2.3</version> 
     <relativePath /> 
    </parent> 

    <groupId>com.xoxox.amqtest</groupId> 
    <artifactId>amqsubscriber</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>jar</packaging> 

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

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>com.xoxox.infra</groupId> 
      <artifactId>infra</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.xoxox.kernel</groupId> 
      <artifactId>KernelDAL</artifactId> 
      <scope>compile</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.jms</groupId> 
      <artifactId>jms</artifactId> 
      <version>1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.14</version> 
     </dependency> 

     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>1.5.11</version> 
     </dependency> 

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

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <testFailureIgnore>true</testFailureIgnore> 
       </configuration> 
      </plugin> 

      <plugin> 
       <artifactId>maven-assembly-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <descriptorRefs> 
         <descriptorRef>jar-with-dependencies</descriptorRef> 
        </descriptorRefs> 
       </configuration> 
       <executions> 
        <execution> 
         <id>make-assembly</id> <!-- this is used for inheritance merges --> 
         <phase>package</phase> <!-- bind to the packaging phase --> 
         <goals> 
          <goal>single</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 

     </plugins> 
     <pluginManagement> 
      <plugins> 
       <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.--> 
       <plugin> 
        <groupId>org.eclipse.m2e</groupId> 
        <artifactId>lifecycle-mapping</artifactId> 
        <version>1.0.0</version> 
        <configuration> 
         <lifecycleMappingMetadata> 
          <pluginExecutions> 
           <pluginExecution> 
            <pluginExecutionFilter> 
             <groupId> 
              com.xoxox.infra.maven.plugins 
             </groupId> 
             <artifactId> 
              infra-codegenerator-maven-plugin 
             </artifactId> 
             <versionRange> 
              [13.3.0,) 
             </versionRange> 
             <goals> 
              <goal>generate-code</goal> 
             </goals> 
            </pluginExecutionFilter> 
            <action> 
             <ignore></ignore> 
            </action> 
           </pluginExecution> 
          </pluginExecutions> 
         </lifecycleMappingMetadata> 
        </configuration> 
       </plugin> 
      </plugins> 
     </pluginManagement> 
    </build> 
</project> 

回答

2

我已經在過去使用exec-maven-plugin

  <plugin> 
       <groupId>org.codehaus.mojo</groupId> 
       <artifactId>exec-maven-plugin</artifactId> 
       <version>1.2.1</version> 
       <executions> 
        <execution> 
         <id>execute-your-main</id> 
         <phase>process-classes</phase> 
         <goals> 
          <goal>java</goal> 
         </goals> 
         <configuration> 
          <mainClass>com.xoxo.amqtest.SubscriberDriver</mainClass> 
          <arguments> 
           <argument>ADD_YOUR_ARGUMENTS_IF_NEEDED</argument> 
          </arguments> 
         </configuration> 
        </execution> 
      </plugin> 
0

採取看看appassembler插件。

http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/

配置看起來像

<plugin> 
      <groupId>org.codehaus.mojo</groupId> 
      <artifactId>appassembler-maven-plugin</artifactId> 
      <version>1.6</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>assemble</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <programs> 
        <program> 
         <mainClass>fun.Tester</mainClass> 
         <id>app</id> 
        </program> 
       </programs> 
      </configuration> 
     </plugin> 

它會創造你的目標,這將有所有相關罐子和可執行根據「bin」目錄平臺目錄目錄名「appassembler」

+0

請使用[appassembler-maven-plugin]的最新版本(http://mojo.codehaus.org/appassembler/appassembler-maven-plugin/) – khmarbaise