我正在通过Intellij Idea 2016.3运行应用程序,一切正常,当我生成.WAR(gradlew汇编)文件时,资产未在正在运行的应用程序中加载,应用程序无法正常工作。
Grails 3.1.14 JDK 1.8.121
这是我的 build.gradle
buildscript {
ext {
grailsVersion = project.grailsVersion
}
repositories {
mavenLocal()
maven { url "https://repo.grails.org/grails/core" }
}
dependencies {
classpath "org.grails:grails-gradle-plugin:$grailsVersion"
classpath "gradle.plugin.com.craigburke.gradle:bower-installer-gradle:2.5.1"
classpath "org.grails.plugins:hibernate4:5.0.5"
classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.8.2"
classpath "org.grails.plugins:views-gradle:1.0.12"
}
}
version "1.0.18"
group "veedy"
apply plugin:"eclipse"
apply plugin:"idea"
apply plugin:"war"
apply plugin:"org.grails.grails-web"
apply plugin:"org.grails.grails-gsp"
apply plugin:"com.craigburke.bower-installer"
apply plugin:"asset-pipeline"
apply plugin:"org.grails.plugins.views-json"
apply plugin: 'spring-boot'
springBoot {
executable = true
}
ext {
grailsVersion = project.grailsVersion
gradleWrapperVersion = project.gradleWrapperVersion
}
repositories {
mavenLocal()
maven { url "https://repo.grails.org/grails/core" }
}
dependencyManagement {
imports {
mavenBom "org.grails:grails-bom:$grailsVersion"
}
applyMavenExclusions false
}
dependencies {
assets "com.craigburke.angular:angular-template-asset-pipeline:2.2.6"
assets "com.craigburke.angular:angular-annotate-asset-pipeline:2.4.0"
assets "com.craigburke:js-closure-wrap-asset-pipeline:1.2.0"
compile "org.springframework.boot:spring-boot-starter-logging"
compile "org.springframework.boot:spring-boot-autoconfigure"
compile "org.grails:grails-core"
compile "org.springframework.boot:spring-boot-starter-actuator"
compile "org.springframework.boot:spring-boot-starter-tomcat"
compile "org.grails:grails-plugin-url-mappings"
compile "org.grails:grails-plugin-rest"
compile "org.grails:grails-plugin-codecs"
compile "org.grails:grails-plugin-interceptors"
compile "org.grails:grails-plugin-services"
compile "org.grails:grails-plugin-datasource"
compile "org.grails:grails-plugin-databinding"
compile "org.grails:grails-plugin-async"
compile "org.grails:grails-web-boot"
compile "org.grails:grails-logging"
compile "org.grails.plugins:cache"
compile "org.grails:grails-plugin-gsp"
compile "org.grails.plugins:hibernate4"
compile "org.hibernate:hibernate-ehcache"
compile "org.grails.plugins:views-json:1.0.12"
console "org.grails:grails-console"
profile "org.grails.profiles:angular:3.1.6"
runtime "com.h2database:h2"
runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.8.2"
testCompile "org.grails:grails-plugin-testing"
testCompile "org.grails.plugins:geb"
testCompile "org.grails:grails-datastore-rest-client"
testRuntime "org.seleniumhq.selenium:selenium-htmlunit-driver:2.47.1"
testRuntime "net.sourceforge.htmlunit:htmlunit:2.18"
//custom
compile 'org.grails.plugins:spring-security-core:3.0.3'
compile "org.grails.plugins:mail:2.0.0.RC4"
compile "org.grails.plugins:grails-spring-websocket:2.3.0"
runtime 'mysql:mysql-connector-java:5.1.36'
}
task wrapper(type: Wrapper) {
gradleVersion = gradleWrapperVersion
}
bower {
'angular'('1.4.x') {
source 'angular.js'
}
'angular-resource'('1.4.x') {
source 'angular-resource.js' >> '/angular/'
}
'angular-mocks'('1.4.x') {
source 'angular-mocks.js' >> '/angular/'
}
'angular-bootstrap'('1.1.x') {
source 'ui-bootstrap-tpls.js' >> '/angular/'
}
'bootstrap'('3.x.x') {
source 'dist/css/bootstrap.css' >> '/bootstrap/'
}
}
assets {
minifyJs = true
minifyCss = true
}
bootRun {
// local.config.location is just a random name. You can use yours.
jvmArgs = ['-Dlocal.config.location=app-config.yml']
}
和我的
答案 0 :(得分:0)
在我的结尾,无论有没有war
,它都可以在build.gradle
下面的代码段中正常工作。
基本上,需要提到资产管道的gradle插件。此外,在dependencies
中将其更改为compile
而不是runtime
buildscript {
ext {
...
}
repositories {
...
}
dependencies {
...
classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.10.2"
...
}
}
apply plugin:"asset-pipeline"
<强>更新强>
在我的Grails应用程序中,我有以下代码:
... \ grails-app \ assets \ javascripts \ app \ app.js
//= require_self
//= require /angular/angular.js
//= require /angular/lodash.js
//= require /angular/ui-bootstrap-tpls-2.3.1.js
//= require /app/directives/directives.js
'use strict';
var app = angular
.module('myapp', [
'ui.bootstrap', 'directives'
]);
... \ grails-app \ assets \ javascripts \ app \ directives \ directives.js
//= require_self
angular.module("directives",[])
.directive('bindUnsafeHtml',['$compile', function($compile) {...}]);
index.gsp中
<asset:javascript src="app/app.js" />
请注意:行//= require_self
之类的注释对于模块依赖性很重要。
Gradle Angular Asset Pipeline在示例中提到了这一点。
答案 1 :(得分:0)
问题解决了,在gradle.build中删除了Bower调用。