Как создать файл 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>