在一些公共Maven仓库中是否有可用的JRE 1.6,我们可以代理到我们的Nexus中?
如果没有,有人能否提供一些提示如何将JRE部署到Maven仓库中?
在一些公共Maven仓库中是否有可用的JRE 1.6,我们可以代理到我们的Nexus中?
如果没有,有人能否提供一些提示如何将JRE部署到Maven仓库中?
这是我找到的解决方案:
修改您的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文件而不解压缩它们,则可以使用"copy"目标代替"unpack"。
你的需求是一个比较合理的使用场景。但在我看来,将其放入maven-repo并不是解决问题的正确方式。
其他应用程序通过直接从提供者获取可执行文件来实现此要求。例如构建服务器(如Hudson/Jenkins)需要在用户选择后下载Java/Maven,而AFAIR Jenkins则直接从Oracle网站下载它们。(由于Oracle要求您在下载之前登录,因此他们使用SSO机制)。沿着这些路径的类似解决方案可能适合您。
即使您将JRE托管在m2-repo中,也存在某些安全问题。JRE是一款敏感程序。即使您说您已经从Oracle托管了相同的JRE,我仍然更愿意从Oracle下载它。