Исходя из фона ASP.NET, я нахожу это шокирующим, сколько работы требуется, чтобы получить Webapp, работающий с Eclipse WTP и Maven, особенно если вы учитесь самостоятельно. Надеемся, что это краткое руководство поможет кому-то быстрее встать на скорость.
Существует два способа получить приветственный мир, работающий в Eclipse WTP с Maven. Вы можете создать динамический веб-проект, а затем добавить природу Maven, или вы можете сделать обратное.
Предпосылки для Eclipse, с обновлением сайтов
конфигурации запуска
Вариант 1: Создание затем Dynamic Web Project добавить Maven Природа
Создать новый проект Maven, выберите архетип org.apache.maven.archetypes : maven-archetype-webapp
Изменение перспективы Java EE.
Создать новую исходную папку, src \ main \ java. Обратите внимание, что Eclipse недостаточно умен, чтобы сделать это для вас, а также порядок расположения папок неверен. src \ main \ java папка указана после src \ main \ resources. Это может быть исправлено вручную позже в свойствах проекта.
Создайте новый сервлет. Обратите внимание, как Eclipse по умолчанию использует этот файл в неправильной папке src \ main \ resources, потому что порядок неправильный. Вместо этого вручную выберите src \ main \ java. Измените сопоставление URL-адресов на второй странице мастера на/*, чтобы упростить тестирование.
Теперь наш сервлет готов, но зависимости от сервлета api не связаны. A) мы можем добавить сервлет api в качестве зависимости от нашего проекта или B) мы можем привязать к конфигурации сервера Eclipse для Apache 7.0.
Для варианта А, добавьте эту зависимость к ПОМ:
.
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>tomcat-api</artifactId>
<version>7.0.${set this}</version>
<scope>provided</scope>
</dependency>
Тест зависимости публикации:
Добавить Joda времени на ПОМ.
Добавьте эту строку в сервлет, созданный ранее для метода doGet и импортировать необходимые зависимости:
.
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.getWriter().println("The time is now: " + new DateTime().toString());
}
Обновить тестовую страницу и теперь вывод должен быть:
Время сейчас: 2012-03-03T14: 14: 29.890-05: 00
Теперь, если вы хотите играть с Servlet 3.0 и аннотации, по умолчанию это не включено, по какой причине я не знаю. Сначала нужно использовать Maven для использования Java 1.6, добавив это вашему pom, иначе каждый раз, когда вы обновляете свой pom, конфигурация вернется к Java 1.5.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
Открытый проект -> Границы проекта. Измените версию в разделе «Динамический веб-модуль» на 3.0, измените java-версию 1.6
Создайте новый сервлет с именем класса AnnotatedServlet в src \ main \ java и обратите внимание, как автоматически создается аннотация @WebServlet.
Вариант 2: Создание затем Dynamic Web Project добавить Maven Природа
- Выберите Tomcat времени выполнения и динамического модуля версии 3.0
- Создать папку источника SRC \ главная \ Java
- целевой выходной набор по умолчанию \ классы
- Установить контекстный каталог src \ main \ webapp
- Проверить создание web.xml
- Создание сервлета с отображением/* для быстрого тестирования
- Добавить выходной заявление метода doGet
response.getWriter().println("Another test");
Дважды щелкните на «дескриптор развертывания» и добавьте этот атрибут в корень элемент веб-приложения metadata-complete="false"
Щелкните правой кнопкой мыши проект и выберите «Запустить как» -> «Запустить на сервере»
- правой кнопкой мыши проект -> Настройка -> Преобразовать в Maven проекта
- Выбор упаковки, как война
- Edit пом и установить компилятор использовать Java 1.6 и добавить Joda-зависимость от времени:
.
<dependencies>
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.1</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
Спасибо за совет, это был правильно настроен, но не работает. В конце концов я узнал, что сработал новый проект с нуля. В этом случае я создал проект, а затем добавил Maven WTP-коннектор, и он не правильно настроил проект. – dcompiled
У меня была немного другая проблема, но это исправило это. Я использовал Maven для создания моего проекта, в котором были SNAPSHOTS. У меня изначально было разрешение рабочей области и отключено. Eclipse был настроен так, чтобы по-прежнему использовать локальный проект, а не моментальные снимки из нашего репозитория nexus. Я продолжал получать CNFE и нашел это, что указывало на проблему, которая по-прежнему пытается ее решить, а не публиковать. – bh5k
это помогло мне много, а в другом случае :) (похоже) – Alex