2013-06-18 6 views
1

Как создать файл развертывания WAR для серверов Apache Tomcat программно с Java?Создание файла WAR с использованием Java

Есть ли библиотека для такой задачи?

Я работаю над небольшой собственной IDE для специальных целей. IDE написана на Java и JavaScript, поэтому мне нужно создать WAR-файл, используя эти.

+1

Вместо этого используйте Ant, но maven. Это гораздо более мощным и, по-моему, более простым в использовании. –

ответ

4

Если вы хотите построить его из кода попытаться сделать это из командной строки с

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

конечно, то же самое будет работать с использованием ANT или Maven (до тех пор, как эти инструменты установлены на конечной платформе).

Edit: добавлена ​​рационализаторское предложение

+0

Я хочу создать его программно, а не используя ANT-скрипты (кроме случаев, когда я смог получить доступ к ним программно). –

+0

Но я не думаю, что да, я? –

+0

Вам не нужен муравей для команд командной строки. вы можете вызвать их через java, и он создаст файл для вас. как вы сказали, вы реализуете собственный идеал, я не знаю, хотите ли вы реализовать поддержку муравьев. – Przemek

0

Вы можете сделать это несколькими способами, для быстрого примера, если вы используете Maven вам просто нужно использовать <packaging>war</packaging>

Вы можете просто экспортировать войну, как уже было сказано, но это не совсем «программистских» ,

Если вы используете Ant - вы можете найти учебник для этого here

1

Я не знаю, библиотек, а WAR файл просто ZIP-файл с другим концом.

Просто создайте структуру внутренней папки и файлы (для этого код java для java) и пакет как zip (у java есть методы для этого, я думаю, снова google) и переименуйте файл из «myfile.zip» в «myfile .war»

-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. проект
  3. изменения» name "и" war destfile ", который будет" .../apache-tomcat/webapps/projectname.wa r "
  4. положите его в папку проекта
  5. открыть его в затмении.
  6. правой кнопкой мыши на нем >> работать как >> муравей сборки
  7. является проверка ли файл войны создается в папке WebApps в апача-котом
+0

Это не отвечает на вопрос. Я хочу создать WAR-файл 'программно в Java' для моей собственной IDE. В результате использование сторонней IDE не является решением. –

1

Я не знаю, как вы могли бы сделать это с помощью IDE у вас есть. Но WAR файл имеет следующую структуру:

  • интернет-ресурсы идут к корню
  • классы проекта (в том числе их папки пакета) перейти в папку WEB-INF/классы
  • банки
  • проект зависимостей идут в WEB -INF/lib

Итак, если вы хотите построить WAR вручную, вам необходимо создать эту файловую структуру внутри zip-файла с помощью.и вам необходимо скопировать его в правильное расположение сервера для его развертывания. Большинство серверов также позволяют «взорванное развертывание», то есть вам не нужен фактический файл войны, вы можете просто развернуть материал в каталог с тем же именем, что и ваша война (IE. 'Myapp.war').

Смежные вопросы