简体   繁体   English

在没有Maven的情况下构建Maven项目

[英]Building Maven project without Maven

I have Maven project, but on one of servers I must build it without Maven. 我有Maven项目,但是在其中一台服务器上,我必须在没有Maven的情况下进行构建。
It's possible using standard JDK commands. 使用标准的JDK命令是可能的。 Where can I see what commands Maven sent to JDK while building project? 在构建项目时,我在哪里可以看到Maven向JDK发送了哪些命令?

Maven does a lot. Maven做了很多。 There's no easy way to simulate what Maven does without Maven. 没有Maven,没有简单的方法来模拟Maven的功能。

If you absolutely can't install maven on the server, build your artifacts on another server (or locally) and move them onto the server via scp. 如果您绝对不能在服务器上安装Maven,请在另一台服务器(或本地)上构建构件,然后通过scp将其移动到服务器上。

That said: I have once had a similar scenario where I generated an RPM from Maven for a server that absolutely needed to run a local build but could not run Maven (network access prohibited). 就是说:我曾经有过类似的场景,我从Maven生成了一个RPM,该服务器绝对需要运行本地版本,但不能运行Maven(禁止网络访问)。 What I did was to put all dependencies in the RPM, plus an Ant distribution and an Ant build file. 我所做的就是将所有依赖项放入RPM中,再加上一个Ant发行版和一个Ant构建文件。 In the RPM install script, the dependencies were unpacked and the Ant script called. 在RPM安装脚本中,解压缩了依赖项,并调用了Ant脚本。 It worked, but it meant double work. 它起作用了,但这意味着双重努力。

This is my solution. 这是我的解决方案。 Of course it's hardcode, and project is very small, but for me it is helpful 当然是硬代码,项目很小,但是对我来说是有帮助的

project structure: 项目结构:
main folder 主文件夹
- dependency (dir) -依赖关系(目录)
- module1 - src ... -module1-src ...
- module2 - src ... -module2-src ...
- manufest.template (file) -manufest.template(文件)
module2 have dependency of module1, module1 is compilied with JDK1.5, module2 with JDK1.6. module2具有对module1的依赖关系,module1与JDK1.5相兼容,module2与JDK1.6相兼容。

@echo off

set JODA=dependency\joda-time-1.6.2.jar
set EJB=dependency\ejb-api-3.0.jar
set PERSISTANCE_API=dependency\persistence-api-1.0.jar
set DEPENDENCIES=%EJB%;%JODA%;%PERSISTANCE_API%
set TEMP_FILE=temp
set PUBLIC_INTERFACE_CLASSES=target\target-module1
set CODEGEN_CLASSES=target\target-module2
mkdir target
mkdir %MODULE1_CLASSES%
mkdir %MODULE2_CLASSES%

dir module1\*.java /s /B > %TEMP_FILE%
%JAVA_HOME_1_5%\bin\javac -classpath %DEPENDENCIES%;%MODULE1_CLASSES% -d %MODULE1_CLASSES% @%TEMP_FILE%

dir module2\*.java /s /B > %TEMP_FILE%
%JAVA_HOME_1_6%\bin\javac -classpath %DEPENDENCIES%;%JAVA_HOME_1_6%\lib\tools.jar;%MODULE1_CLASSES%;%MODULE2_CLASSES% -d %MODULE2_CLASSES% @%TEMP_FILE%

jar cf module1.jar -C %MODULE1_CLASSES% .
jar cfm module2.jar manifest.template -C %MODULE2_CLASSES% .

rm %TEMP_FILE%
rm -r target

You can download the dependencies from here: http://jar-download.com/online-maven-download-tool.php . 您可以从此处下载依赖项: http : //jar-download.com/online-maven-download-tool.php Therefore you need no Maven installtion. 因此,您不需要安装Maven。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM