1

如何使用 Java 以编程方式为 Apache Tomcat 服务器创建可部署的 WAR 文件?

是否有用于此类任务的库?

我正在为特殊目的开发一个小型自己的 IDE。IDE 是用 Java 和 JavaScript 编写的,所以我需要使用它们创建 WAR 文件。

4

5 回答 5

4

如果您想从代码构建它,请尝试从命令行使用

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("jar cvf /path/to/your/project/your-file.war");

当然,同样的事情可以使用 ANT 或 Maven(只要这些工具安装在最终平台上)。

编辑:添加改进建议

于 2013-06-18T08:04:15.280 回答
1

我不知道库,但 WAR 文件只是一个具有不同结尾的 ZIP 文件。

只需创建内部文件夹结构和文件(谷歌的java代码)并打包为zip(我认为java也有方法,再次谷歌)并将文件从“myfile.zip”重命名为“myfile.war”

于 2013-06-18T08:02:44.243 回答
1

I don't know how you would do it using the IDE you have. But a WAR file has the following structure:

  • web resources go to the root
  • project classes (including their package folders) go to a folder WEB-INF/classes
  • project dependency jars go to WEB-INF/lib

So if you want to build a WAR by hand, you need to create that file structure inside a zip file with a .war extension and you need to copy that to the proper location of the server to deploy it. Most servers also allow 'exploded deployment', meaning that you don't need an actual war file, you can just deploy the stuff to a directory with the same name as your war (IE. 'myapp.war').

于 2013-06-18T08:16:33.667 回答
0

您可以通过多种方式执行此操作,例如,如果您使用的是 maven,则只需使用<packaging>war</packaging>

如前所述,您可以只导出战争,但这并不完全是“程序化的”。

如果您使用的是 Ant - 您可以在此处找到相关教程

于 2013-06-18T08:01:26.097 回答
-2
<?xml version="1.0" ?> 

<path id="compile.classpath">
    <fileset dir="WebContent/WEB-INF/lib">
        <include name="*.jar"/>
    </fileset>
</path>

<target name="init">
    <mkdir dir="build/classes"/>
    <mkdir dir="dist" />
</target>

<target name="compile" depends="init" >
    <javac destdir="build/classes" debug="true" srcdir="src">
        <classpath refid="compile.classpath"/>
    </javac>
</target>

<target name="war" depends="compile">
    <war destfile="/APP/jboss-5.1.0.GA/server/all/deploy/DispatchActionEx.war" webxml="WebContent/WEB-INF/web.xml">         
        <fileset dir="WebContent"/>
        <lib dir="WebContent/WEB-INF/lib"/>         
        <classes dir="build/classes"/>
    </war>
</target>

<target name="clean">       
</target>

  1. 只需编写一个 build.xml 文件(我已经举了一个例子),
  2. 更改“项目名称”和“war destfile”,这将是“.../apache-tomcat/webapps/projectname.war”
  3. 把它放在你的项目文件夹中
  4. 在eclipse中打开它。
  5. 右键单击它>>运行为>>ant build
  6. 检查是否在apache-tomcat的webapps文件夹中创建了war文件
于 2013-06-18T08:11:53.450 回答