在使用tomcat7开始调试时,如何使我的源中的更改按需重新发布到Embedded Tomcat:run-war

时间:2016-07-05 19:06:02

标签: java eclipse maven tomcat maven-tomcat-plugin

我正在使用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>

0 个答案:

没有答案