适用于 Java 8 的 Tomcat 8 Maven 插件
Posted
技术标签:
【中文标题】适用于 Java 8 的 Tomcat 8 Maven 插件【英文标题】:Tomcat 8 Maven Plugin for Java 8 【发布时间】:2015-01-09 02:52:51 【问题描述】:tomcat7-maven-plugin
是否与 tomcat 8 服务器和 java 8 一起使用?我找不到任何tomcat8-maven-plugin
。
【问题讨论】:
不幸的是它还没有准备好issues.apache.org/jira/browse/MTOMCAT-234 尝试使用 Cargo 查看答案:***.com/questions/24271213/… 你能解释一下你在Tomcat7-maven-plugin中使用tomcat 8服务器的意思吗?您如何使插件与独立服务器一起使用?插件启动自己的服务器.. 这能回答你的问题吗? Tomcat 8 integration with Maven 【参考方案1】:是的,你可以,
在您的 pom.xml
中,添加 tomcat 插件。 (您可以将它用于 Tomcat 7 和 8):
pom.xml
<!-- Tomcat plugin -->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<url>http:// localhost:8080/manager/text</url>
<server>TomcatServer</server> *(From maven > settings.xml)*
<username>*yourtomcatusername*</username>
<password>*yourtomcatpassword*</password>
</configuration>
</plugin>
tomcat-users.xml
<tomcat-users>
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<user username="admin" password="password" roles="manager-gui,manager-script" />
</tomcat-users>
settings.xml
(maven > conf)
<servers>
<server>
<id>TomcatServer</id>
<username>admin</username>
<password>password</password>
</server>
</servers>
***部署/重新部署**
mvn tomcat7:deploy
或
mvn tomcat7:redeploy
在(Ubuntu 和 Windows 8/10)上试过这个:
Jdk 7 和 Tomcat 7 Jdk 7 和 Tomcat 8 Jdk 8 和 Tomcat 7 Jdk 8 和 Tomcat 8 Jdk 8 和 Tomcat 9在 Jdk 7/8 和 Tomcat 7/8 上测试。 (适用于 Tomcat 8.5 和 9)
注意:Tomcat 管理器应该正在运行或正确设置,然后才能与 maven 一起使用。
祝你好运!
【讨论】:
> mvn org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run INFO:正在启动 Servlet 引擎:Apache Tomcat/7.0.47 只有在本地 PC 上有 tomcat 时才好。不能解决嵌入式 tomcat 的问题 将用户名和密码放在 POM 中是多余的,并且存在安全风险(尤其是当您将代码签入存储库时)。在 POM 中通过 ID 识别服务器的全部意义在于,Maven 可以在特定于用户的设置文件中查找用户名和密码(未检入源代码控制)。但除此之外,这篇文章真的很有帮助——谢谢。 tomcat7-maven-plugin,7代表什么?是java版本还是tomcat版本。我可以将 tomcat7-maven-plugin 与 Tomcat-9 一起使用吗? 在哪里可以找到以下文件:tomcat-users.xml - (PROJECT_NAME\target\tomcat\conf\tomcat-users.xml?),settings.xml - (???)。我有 maven 项目,但仍然无法弄清楚【参考方案2】:插件运行Tomcat 7.0.47:
mvn org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:run
...
INFO: Starting Servlet Engine: Apache Tomcat/7.0.47
这是使用 Tomcat 8 和 Java 8 运行插件的示例:Cargo embedded tomcat: custom context.xml
【讨论】:
【参考方案3】:差不多 2 年后.... 这个 github project readme 有一些清晰的 maven 插件配置,根据这个 apache github project,插件本身似乎很快就会实现。
【讨论】:
通过这个网址链接我的答案***.com/questions/37370927/…【参考方案4】:groupId 和 Mojo 名称更改 从 2.0-beta-1 版本开始,tomcat mojos 已重命名为 tomcat6 和 tomcat7,目标相同。
您必须配置您的 pom 以使用这个新的 groupId:
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.3-SNAPSHOT</version>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.3-SNAPSHOT</version>
</plugin>
</plugins>
</pluginManagement>
或者在你的 settings.xml 中添加 groupId
…… org.apache.tomcat.maven ……
【讨论】:
【参考方案5】:自 2017 年 11 月起,可以使用 tomcat8-maven-plugin:
<!-- https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat8-maven-plugin -->
<dependency>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat8-maven-plugin</artifactId>
<version>2.2</version>
</dependency>
请注意,此插件位于 ICM 存储库中(而不是 Maven 中心),因此您应该将存储库添加到 pom.xml 中的 pluginsRepositories 中:
<pluginRepositories>
<pluginRepository>
<id>icm</id>
<name>Spring Framework Milestone Repository</name>
<url>http://maven.icm.edu.pl/artifactory/repo</url>
</pluginRepository>
</pluginRepositories>
【讨论】:
试过但看到Could not transfer artifact org.apache.tomcat.maven:tomcat8-maven-plugin:pom:2.2 from/to icm (http://maven.icm.edu.pl/artifactory/repo): Authentication failed for http://maven.icm.edu.pl/artifactory/repo/org/apache/tomcat/maven/tomcat8-maven-plugin/2.2/tomcat8-maven-plugin-2.2.pom 401 Unauthorized
【参考方案6】:
另一个解决方案(如果可能的话)是使用 TomEE 而不是 Tomcat,它有一个工作的 maven 插件:
<plugin>
<groupId>org.apache.tomee.maven</groupId>
<artifactId>tomee-maven-plugin</artifactId>
<version>7.1.1</version>
</plugin>
版本 7.1.1 包装了 Tomcat 8.5.41
【讨论】:
以上是关于适用于 Java 8 的 Tomcat 8 Maven 插件的主要内容,如果未能解决你的问题,请参考以下文章
java 8 String.chars() 是不是适用于 8 字节字符?
android面临崩溃报告仅适用于8.0和8.1中的firebase通知