首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >构建包含JDK依赖解决方案的RPM

构建包含JDK依赖解决方案的RPM
EN

Stack Overflow用户
提问于 2014-02-10 17:17:41
回答 1查看 1.7K关注 0票数 1

我正在从jdk的zip文件分发版中使用maven和nexus将oracleJDK1.6构建为一个rpm。

当完成时,rpm拒绝安装而没有以下内容:

代码语言:javascript
复制
[root@build]# 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安装将安装缺少的库?

我问这两个问题,因为我不确定我会向哪个方向摇摆。

编辑:我的pom:

代码语言:javascript
复制
<?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>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-10 11:36:11

基本上,我认为在包中包括其他二进制文件(比如java)并不是个好主意。

我宁愿依赖他们。

但有时您必须这样做,例如,客户已经在他的机器上安装了Java,但是您希望运行自己的java版本,从而为其提供包。

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

像这样

代码语言:javascript
复制
<configuration>  
     ......
     <autoRequires>false</autoRequires>
</configuration>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21683731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档