Как создать файл WAR с помощью командной строки?

Я установил JBoss Developer Studio, и можно создать файл WAR, выбрав "Проект правой кнопкой мыши> Экспорт> Файл WAR", но я хочу экспортировать свой проект в файл WAR с помощью командной строки.

Я установил maven, что является одним из требований Studio, и я прочитал, что могу сгенерировать файл WAR, используя maven, но мне нужен файл с именем pom.xml. Когда я искал в своем рабочем пространстве и проекте, pom.xml отсутствовал. Мне может понадобиться вручную создать pom.xml, но я не уверен, как это сделать.

Мое дерево каталогов для моего проекта выглядит следующим образом:

Siesta
├── build
│   └── classes
├── src
└── WebContent
    ├── extjs
    ├── extjs-4.2.0
    ├── extjs-4.2.2
    ├── index.jsp
    ├── META-INF
    ├── siesta
    ├── tests
    └── WEB-INF

Как создать WAR-файл для моего проекта Maven / JBoss с помощью командной строки? Я использую Linux и предпочел бы не создавать файл pom.xml, но если нет другого способа, я буду использовать файл xml для генерации файла war.

Редактировать:

Таким образом, jar - это способ создать файл войны. Я написал крошечный скрипт, который создаст для меня файл войны для конкретной директории.

#!/bin/bash
cd Siesta/WebContent/
jar -cvf ../../Siesta.war *
cd -

Затем, если вы откроете файл war в утилите zip или в менеджере архивов в Ubuntu, вы увидите эту структуру

    ├── extjs
    ├── extjs-4.2.0
    ├── extjs-4.2.2
    ├── index.jsp
    ├── META-INF
    ├── siesta
    ├── tests
    └── WEB-INF

Я должен записать компакт-диск в каталог, который я хочу создать файл войны, который немного раздражает. Я думаю, что может быть лучший способ сделать это, используя опцию -C в jar, но когда я использовал "jar -cvf Siesta.war -C Siesta/WebContent *", это не дало того же результата.

Edit2:

jar -cvf my-app.war myfolder/

Чтобы приложение работало на TomCat, я использую следующее:

cd Siesta/WebContent
jar -cvf Siesta.war *

3 ответа

Решение

Хорошо, вот уже существующая SO с парой возможностей о том, как создать файл войны: Как создать файлы войны.

Лично я предпочитаю Maven, чем любой другой сценарий сборки. Так как я перешел с ANT, мне сначала не понравился Maven, но после того, как я вложил день или два в документацию: http://maven.apache.org/pom.html i начал любить это. В вашем случае все, что вам нужно, - это рефакторинг вашего проекта, чтобы он соответствовал стандартной файловой структуре maven и создал минимальный проект Maven (иначе pom.xml файл) для ваших источников, который имеет упаковку war вместо по умолчанию jar,

Если вы хотите придерживаться только консоли и не использовать никаких помощников по сборке, кроме тех, которые поставляются JDK, вы можете создать свою войну примерно так:

jar cvf my-app.war

Взгляните на это: https://docs.oracle.com/javase/tutorial/deployment/jar/build.html для получения полной справки о поддерживаемых опциях.

(Примечание. "Война" в контексте веб-приложений на основе Java следует стандартному формату: http://docs.oracle.com/javaee/6/tutorial/doc/bnaby.html а технический файл ".war" - точно так же, как сжатая ZIP-папка, переименованная в ".zip".)

(Также обратите внимание, что я бы действительно нашел время, чтобы связаться с Maven, так как после этого вы знаете о серьезном инструменте сборки и сможете создать jar, ear, war и т.д. в стандартном процессе).

Если это проект Maven, откройте консоль, перейдите к файлу pom.xml и запустите:

mvn package

Он создаст файл {artifactId}-{version}.war в каталоге ${basedir}/target. Это предполагает, что ваш packaging Элемент POM установлен в war в вашем файле pom.xml.

<project ...>
    ...
    <packaging>war</packaging>
    ...
</project>

Некоторые из действительных ценностей упаковки - банка, война, ухо и пом. Если значение упаковки не указано, по умолчанию используется jar.

Подробнее здесь и здесь.

Самый простой вариант (если вы используете Maven) - создать его с помощью maven-archetype-webapp:

       mvn archetype:generate -DgroupId=com.sample -DartifactId=web-project -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false

Затем вы можете уточнить свой pom.xml, включив в него необходимые зависимости, например:

      <dependency>
    <groupId>jakarta.platform</groupId>
    <artifactId>jakarta.jakartaee-api</artifactId>
    <version>8.0.0</version>
    <scope>provided</scope>
</dependency>

Источник: Как создать веб-приложение из командной строки.

Другие вопросы по тегам