2012-07-31 29 views
2

在Maven2中使用Sigar时出现错误。我知道它无法找到本地库(dll或.so),因为我知道我不能将本地库复制到我的WEB-INF/lib目录中......我的问题是“如何将lib文件的目录复制到在我的WAR文件中使用Maven的WEB-INF/lib?在Maven2中使用Sigar的问题

我想复制FROM的目录是:$ {basedir}/lib/ 我想复制到的目录是:$ {webapp.output}/WEB -INF/lib目录(我想?)

以下是错误:

java.lang.UnsatisfiedLinkError: org.hyperic.sigar.Sigar.getLoadAverage() 

这里是我的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>com.testing</groupId> 
    <artifactId>TestAgent</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>TestAgent</name> 

    <properties> 
     <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <netbeans.hint.deploy.server>gfv3ee6</netbeans.hint.deploy.server> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>6.0.35</version> 
     </dependency> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-web-api</artifactId> 
      <version>6.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.ini4j</groupId> 
      <artifactId>ini4j</artifactId> 
      <version>0.5.2</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hyperic</groupId> 
      <artifactId>sigar</artifactId> 
      <version>1.6.4</version> 
      <scope>system</scope> 
      <systemPath>${basedir}/lib/sigar.jar</systemPath> 
     </dependency>  
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>net.java.dev.jna</groupId> 
      <artifactId>jna</artifactId> 
      <version>3.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>net.java.dev.jna</groupId> 
      <artifactId>platform</artifactId> 
      <version>3.4.0</version> 
     </dependency> 
     <dependency> 
      <groupId>com.google.code.gson</groupId> 
      <artifactId>gson</artifactId> 
      <version>2.2.2</version> 
     </dependency> 
    </dependencies> 

    <build>   
     <testSourceDirectory>src/test/java</testSourceDirectory> 
     <testResources> 
      <testResource> 
       <directory>src/test/resources</directory> 
      </testResource> 
     </testResources> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <version>2.3.2</version> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
        <compilerArguments> 
         <endorseddirs>${endorsed.dir}</endorseddirs> 
        </compilerArguments> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-war-plugin</artifactId> 
       <version>2.1.1</version> 
       <!-- <configuration> section added to pick up the WEB-INF/web.xml inside WebContent --> 
       <configuration> 
        <webResources> 
         <resource> 
          <directory>src/main/webapp</directory> 
         </resource> 
        </webResources> 
        <failOnMissingWebXml>true</failOnMissingWebXml> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-dependency-plugin</artifactId> 
       <version>2.1</version> 
       <executions> 
        <execution> 
         <phase>validate</phase> 
         <goals> 
          <goal>copy</goal> 
         </goals> 
         <configuration> 
          <outputDirectory>${endorsed.dir}</outputDirectory> 
          <silent>true</silent> 
          <artifactItems> 
           <artifactItem> 
            <groupId>javax</groupId> 
            <artifactId>javaee-endorsed-api</artifactId> 
            <version>6.0</version> 
            <type>jar</type> 
           </artifactItem> 
          </artifactItems> 
         </configuration> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
    <repositories> 
     <repository> 
      <url>http://download.eclipse.org/rt/eclipselink/maven.repo/</url> 
      <id>eclipselink</id> 
      <layout>default</layout> 
      <name>Repository for library EclipseLink (JPA 2.0)</name> 
     </repository> 
    </repositories> 
</project> 

回答

1

你可以配置maven war插件来复制附加文件/文件夹,如图所示here。像下面的东西。

<configuration> 
     <webResources> 
     <resource> 
      <directory>lib</directory> 
      <!-- override the destination directory for this resource --> 
      <targetPath>WEB-INF/lib</targetPath> 
     </resource> 
     </webResources> 
    </configuration> 
+0

似乎不起作用。目标目录似乎使所有文件进入更深的名为lib的目录。它没有将文件从lib复制到目标:( – MichaelICE 2012-07-31 14:44:19

+0

@MikeCurry。在上面的答案中更新了''这是否正确地放置内容? – Raghuram 2012-07-31 16:11:37

+0

不,它似乎在其内部创建了另一个WEB-INF(WEB-INF/WEB-INF) – MichaelICE 2012-07-31 16:17:01

相关问题