Maven存储库中的JRE 1.6(公共或私有)

时间:2011-12-16 21:36:35

标签: maven java

我们可以在Nexus中代理一些公共Maven存储库中是否有JRE 1.6?

如果没有,有人可以提供一个关于如何将JRE部署到Maven存储库的提示吗?

3 个答案:

答案 0 :(得分:13)

这是我找到的解决方案:

  • 压缩JRE(jre-linux32-1.6.0.23.zip和jre-jre-win32-1.6.0.zip in 我的情况)。
  • 通过Web UI将它们上传到您的Nexus存储库(或使用“mvn”手动部署),设置工件参数:groupid =“oracle”artifactid =“jre-win32”/“jre-linux32”,设置 正确的版本和包装类型“zip”。
  • 修改你的pom.xml以在构建期间下载并解压缩依赖项(我将它绑定到“prepare-package”阶段)。

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.4</version>
                <executions>
                    <execution>
                        <id>copy</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>unpack</goal>
                        </goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>oracle</groupId>
                                    <artifactId>jre-win32</artifactId>
                                    <version>1.6.0.23</version>
                                    <type>zip</type>
                                    <overWrite>false</overWrite>
                                    <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                                    <!--<destFileName>optional-new-name.jar</destFileName>-->
                                </artifactItem>
                                <artifactItem>
                                    <groupId>oracle</groupId>
                                    <artifactId>jre-linux32</artifactId>
                                    <version>1.6.0.23</version>
                                    <type>zip</type>
                                    <overWrite>false</overWrite>
                                    <outputDirectory>${project.build.directory}/alternateLocation</outputDirectory>
                                    <!--<destFileName>optional-new-name.jar</destFileName>-->
                                </artifactItem>
                            </artifactItems>
                            <outputDirectory>${project.build.directory}/wars</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>true</overWriteSnapshots>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    

就是这样。 JRE将被下载并解压缩到 target \ alternateLocation文件夹。

如果您只想复制ZIP文件而不提取它们,则可以使用“复制”目标而不是“解压缩”。

答案 1 :(得分:1)

您的要求在某种程度上是有效的用例。但恕我直言,把它放入maven-repo并不是这样做的。

其他应用程序通过直接从提供程序获取可执行文件来实现此要求。例如,像Hudson / Jenkins这样的构建服务器需要在用户选择时下载Java / Maven,而AFAIR Jenkins则直接从Oracle站点下载它们。 (由于oracle要求您在下载之前登录,因此他们使用SSO机制)。 沿着这条道路的类似解决方案将适合您。

即使您在m2-repo中托管您的JRE,也存在某些安全问题。 JRE是一个敏感的计划。即使你说你从oracle托管了相同的JRE,我宁愿从oracle下载它。

答案 2 :(得分:-2)

Here您可以阅读如何将jar安装到maven仓库中。但是你为什么要在maven仓库中安装JRE jar?