В более сложных проектах мне известно, что в исходном коде есть каталог webapp:
my-webapp/
my-webapp/WEB-INF/
my-webapp/WEB-INF/web.xml
my-webapp/WEB-INF/lib/
my-webapp/WEB-INF/classes/
my-webapp/WEB-INF/jsp/my.jsp
my-webapp/WEB-INF/tld/my.tld
Затем, используя Ant , я создаю временный промежуточный каталог ииспользуйте его, чтобы построить войну:
<mkdir dir="${staging.dir}"/>
<copy todir="${staging.dir}">
<fileset dir="${src.dir}/my-webapp" includes="**/*"/>
</copy>
<war destfile="my-webapp.war" webxml="${staging.dir}/WEB-INF/web.xml">
<fileset dir="${staging.dir}" includes="**/*"/>
<classes dir="${build.dir}"/>
<lib dir="${lib.dir}"/>
</war>
Однако, если ваш проект проще (без JSP, ресурсов и т. д.), вы можете просто уйти без определенного каталога webapp в вашем источнике.Вы можете просто разместить файл web.xml в соответствующем дереве исходного кода, указать на него задачу <war>
и указать соответствующие каталоги class / lib.
Что касается ваших пояснений в комментариях, Tomcat (и большинство контейнеров) ожидает структуру, подобную следующей:
my-webapp/WEB-INF/
my-webapp/WEB-INF/lib/ (for jar files)
my-webapp/WEB-INF/classes/ (for class files)
my-webapp/WEB-INF/web.xml (deployment descriptor)
Документация Tomcat раздел по развертыванию У есть довольно хорошее объяснение этого материала.
Примечательно: все, что вы поместите в WEB-INF
, не будет доступно напрямую (например, через URL).Пример:
- Если вы поместите файлы JSP в
my-webapp/jsp
, вы сможете получить к ним доступ напрямую, например, http://example.com/my-webapp/my.jsp - Если вы поместите файлы JSP в
my-webapp/WEB-INF/jsp
, вы не сможете получить к ним доступ по URL-адресу в предыдущем пункте.Вам нужно будет предоставить способ получить к ним доступ, например, перенаправив их из сервлета.
Я предпочитаю, чтобы мои файлы JSP были в WEB-INF, так как я отношусь к ним как кпредставления в структуре MVC и мои контроллеры (сервлеты) определяют, как к ним обращаться и как они отображаются.