maven(在dev配置文件下运行)如何在index.html中包含javascript文件?

时间:2017-02-24 07:21:14

标签: jhipster

我从2.0版开始就没有使用过jhipster,我现在正在追赶版本#4.0.6。 当我尝试通过" ./ mvnw"来构建初始应用程序时(在命令行中使用默认的 dev maven配置文件),应用程序javascript文件不会添加到index.html(因此当我尝试http://localhost:8080时,我的浏览器中的页面会显示为空白) 。 有人可以向我解释一下正常的事件链,这些事件通常会导致maven(使用 dev 配置文件)将应用程序javascript文件包含到index.html中吗? 非常感谢您的帮助。 最好的祝福 kbjp

4 个答案:

答案 0 :(得分:10)

我们的工作流程如下,纱线或npm将根据选择使用

  1. 生成应用程序时会生成文件,最后会触发yarn install任务
  2. postInstall中的package.json脚本在yarn install之后触发,此步骤调用webpack:build任务
  3. 现在,您应该根据所选的构建工具将所有文件生成并编译到wwwtarget文件夹中的build文件夹中
  4. 现在运行mvnwgradlew将启动后端,并且应该可以在localhost:8080处获得,这也应该服务于从上面步骤编译的前端
  5. 现在,如果您开始进行更改,则不会反映为未编译,因此您需要在更改后手动运行webpack:build:dev或使用实时重新加载yarn start
  6. 要么您没有让postInstall脚本运行,要么您删除了目标文件夹

    您也可以通过传递webpack个人资料(例如mvnw -Pdev,webpack

    来强制maven运行webpack任务

答案 1 :(得分:1)

我刚遇到这个问题,虽然我正在使用gradle。 Deepu's answer也为我解决了一切。为了强制gradle在干净之后运行webpackBuildDev任务(构建缺少的www目录),我已经添加了这个:

processResources {
  doLast {
    if (!new File("$buildDir/www").exists()) webpackBuildDev.exec()
  }
}

据推测,这可以实现与前端-maven-plugin相同的功能。

答案 2 :(得分:0)

构建Web资产的单个命令(图像,html,打字稿等)是

type DeepPick<T, S extends DeepSelect<T>> = {[K in keyof S]: S[K] extends DeepSelect<infer U> ? DeepPick<T[K], U> : T[K]}

此命令会将网络资源放在需要的位置,即yarn webpack:build

答案 3 :(得分:0)

Deppu的答案很好地涵盖了主要的概念方面。我想基于碰到类似Maven的类似问题而增加我的两分钱。我们知道默认的首选JHipster样式是使用两个终端,一个使用./mvnw,一个使用yarn start。

但是,在我们的项目中,有时我们只专注于某些后端工作,并在单个终端中运行./mvnw,并希望前端始终在那里使用。尽管出于某种原因(日食或Maven清洁步骤等),前端的人工制品可能始终不会出现在/ target / www中。

因此,为了确保何时在单个终端中运行./mvnw并始终构建前端,我按如下所示更新了maven dev 配置文件。基本上添加了调用yarn install的前端构建插件(此脚本已经在不运行dev服务器的情况下作为脚本的一部分传递了yarn run webpack:build步骤)和test。这对我有用。

<profile>
    <id>dev</id>
    <activation>
        <activeByDefault>true</activeByDefault>
    </activation>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-undertow</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <warSourceDirectory>src/main/webapp/</warSourceDirectory>
                </configuration>
            </plugin>
            <plugin>
                <groupId>com.github.eirslett</groupId>
                <artifactId>frontend-maven-plugin</artifactId>
                <version>${frontend-maven-plugin.version}</version>
                <executions>
                    <execution>
                        <id>install node and yarn</id>
                        <goals>
                            <goal>install-node-and-yarn</goal>
                        </goals>
                        <configuration>
                            <nodeVersion>${node.version}</nodeVersion>
                            <yarnVersion>${yarn.version}</yarnVersion>
                        </configuration>
                    </execution>
                    <execution>
                        <id>yarn install</id>
                        <goals>
                            <goal>yarn</goal>
                        </goals>
                        <configuration>
                            <arguments>install</arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>webpack build test</id>
                        <goals>
                            <goal>yarn</goal>
                        </goals>
                        <phase>test</phase>
                        <configuration>
                            <arguments>run webpack:test</arguments>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <properties>
        <!-- log configuration -->
        <logback.loglevel>DEBUG</logback.loglevel>
        <!-- default Spring profiles -->
        <spring.profiles.active>dev${profile.no-liquibase}</spring.profiles.active>
    </properties>
</profile>