我正在使用Eclipse而我没有在服务器视图中注册Tomcat(请不要说我添加新服务器)。
我在Eclipse中通过在Debug Configurations中进行两次设置来启动调试模式
1 - 在Main标签下的目标中输入“clean install tomcat7:run-war -Dspring.profiles.active = development”
2 - 并在“源”选项卡中添加了项目。
Tomcat启动,我可以完美地调试java代码。问题是,每当我在java或html中更改一个小东西时,如果我不停止并通过“clean install tomcat7:run-war -Dspring.profiles.active = development”再次启动它将不会生效。你可以想象我正在浪费时间。
我在某处读到我可以将html和类编辑文件直接复制并粘贴到目标目录中,但target / tomcat只包含conf和日志文件夹。在目标中我确实看到my_app.war。顺便说一句,它必须存在一种更好的方法来让Tomcat刷新更改后的代码。
直接的问题是:如何在使用tomcat7启动调试时自动将源代码中的更改重新发布到Embedded Tomcat:run-war?
我看到了几个论坛主题,教我如何使用在Eclipse中注册的服务器来完成它,但我的情况有点不同。
我猜,但我不知道是什么,我在这里做错了什么 “installsources ...”
我找到的最接近的主题是
How to run tomcat7-maven-plugin, that server code changes will be updated immediately
在这个问题中,基本上,我找到了两个建议:
1 - 关闭测试脚本(好吧,仍然需要重新启动嵌入式服务器,尽管在某些情况下要快一点)
2 - 使用“重新部署”。我试过“干净安装tomcat7:redeploy -Dspring.profiles.active = development”,我得到了:
Failed to execute goal org.apache.maven.plugins:maven-clean-plugin:2.5:clean (default-clean) on project calories-tracker: Failed to clean project: Failed to delete
开发配置文件配置的相关部分:
@Configuration
@Profile("development")
@EnableTransactionManagement
public class DevelopmentConfiguration {
@Bean(name = "datasource")
public DriverManagerDataSource dataSource() {
…
@Bean(name = "entityManagerFactory")
public LocalContainerEntityManagerFactoryBean entityManagerFactory(DriverManagerDataSource dataSource) {
…
pom.xml的相关部分:
<packaging>war</packaging>
<properties>
<java-version>1.8</java-version>
<org.springframework-version>4.1.3.RELEASE</org.springframework-version>
<spring-security-version>3.2.5.RELEASE</spring-security-version>
<hibernate.version>4.3.7.Final</hibernate.version>
<org.slf4j-version>1.6.1</org.slf4j-version>
<jackson-version>2.4.4</jackson-version>
<postgres.driver.version>9.3-1100-jdbc41</postgres.driver.version>
</properties>
<build>
<finalName>my_app</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>${java-version}</source>
<target>${java-version}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>install</id>
<phase>install</phase>
<goals>
<goal>sources</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<configuration>
<path>/</path>
<httpsPort>8443</httpsPort>
<keystoreFile>${basedir}/other/keystore.jks</keystoreFile>
<keystorePass>secret</keystorePass>
</configuration>
</plugin>
</plugins>
</build>