2014-02-10 63 views
1

我使用maven和nexus从jdk的zip文件分发构建oracle jdk 1.6到rpm中。构建一个包含JDK依赖关系解析的RPM

完成后,转速拒绝安装不执行下列操作:

[[email protected]]# rpm -ivh oracle-jdk-1.6.0_26-1.noarch.rpm 
error: Failed dependencies: 
     libXt.so.6()(64bit) is needed by oracle-jdk-1.6.0_26-1.noarch 
     libodbc.so()(64bit) is needed by oracle-jdk-1.6.0_26-1.noarch 
     libodbcinst.so()(64bit) is needed by oracle-jdk-1.6.0_26-1.noarch 

精细。我猜maven创建了这种依赖关系。它的原生解压缩表单中的jdk可以正常工作。

如何配置我的pom,以便maven不会解决这些依赖关系?

我该如何配置我的pom,以便yum -y install会安装缺少的库?

我问这两个,因为我不知道我会摇摆。

编辑:我POM:

<?xml version="1.0"?> 
<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.oracle</groupId> 
    <artifactId>jdk</artifactId> 
    <version>1.6.0_26</version> 
    <packaging>pom</packaging> 
    <properties> 
    <unix.user>root</unix.user> 
    <rpm.friendly.name>oracle-jdk</rpm.friendly.name> 
    <rpm.install.basedir>/usr/java/jdk/1.6.0_26</rpm.install.basedir> 
    <sourcefile.unzip.dir>${project.build.directory}/jdk1.6.0_26</sourcefile.unzip.dir> 
    <yum.repo.host>localhost</yum.repo.host> 
    <yum.repo.path>/apps/httpd/yumrepo</yum.repo.path> 
    </properties> 
    <dependencies> 
    <dependency> 
     <groupId>com.oracle</groupId> 
     <artifactId>jdk</artifactId> 
     <version>1.6.0_26</version> 
     <type>tar.gz</type> 
    </dependency> 
    </dependencies> 
    <distributionManagement> 
    <repository> 
     <id>ssh-repository</id> 
     <url>scpexe://${yum.repo.host}${yum.repo.path}</url> 
    </repository> 
    </distributionManagement> 
    <build> 
    <extensions> 
     <extension> 
     <groupId>org.apache.maven.wagon</groupId> 
     <artifactId>wagon-ssh-external</artifactId> 
     <version>1.0-beta-6</version> 
     </extension> 
    </extensions> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>rpm-maven-plugin</artifactId> 
     <version>2.1-alpha-3</version> 
     <executions> 
      <execution> 
      <id>generate-rpm</id> 
      <goals> 
       <goal>attached-rpm</goal> 
      </goals> 
      </execution> 
     </executions> 
     <configuration> 
      <name>${rpm.friendly.name}</name> 
      <copyright>2014, JM</copyright> 
      <group>Application/Internet</group> 
      <packager>JM</packager> 
      <needarch>false</needarch> 
      <changelogFile>src/changelog</changelogFile> 
      <mappings> 
      <mapping> 
       <directory>${rpm.install.basedir}</directory> 
       <username>${unix.user}</username> 
       <groupname>${unix.user}</groupname> 
       <sources> 
       <source> 
        <location>${sourcefile.unzip.dir}</location> 
       </source> 
       </sources> 
      </mapping> 
      </mappings> 
     </configuration> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-dependency-plugin</artifactId> 
     <version>2.4</version> 
     <executions> 
      <execution> 
      <id>unpack</id> 
      <phase>generate-resources</phase> 
      <goals> 
       <goal>unpack-dependencies</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>${project.build.directory}</outputDirectory> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
    <repositories> 
    <repository> 
     <snapshots> 
     <enabled>true</enabled> 
     </snapshots> 
     <id>thirdparty</id> 
     <url>http://myrepo.com:8081/nexus/content/repositories/thirdparty</url> 
    </repository> 
    </repositories> 
</project> 
+0

你能告诉到目前为止,你做了什么? – khmarbaise

+0

我已将pom添加到问题 – Jepper

+0

我在生成资源阶段在内部尝试了 **/db/*。没有快乐。 – Jepper

回答

3

基本上我认为它不是一个好主意,包括其他二进制文件(如Java)在你的包
我宁愿对他们的依赖。

但是有时你必须例如客户已经在他的机器上安装了Java,但是你想运行你自己的Java版本并且因此提供给你的包。

要做到这一点,你可以简单地告诉maven插件不要自动添加对这些包的需求。

这样

<configuration> 
    ...... 
    <autoRequires>false</autoRequires> 
</configuration>