我在include
中有很长的settings.gradle
:
include 'project-subproj1', 'project-subproj2', 'project-subproj3', 'project-subproj4'
在settings.gradle
中分割长行的正确语法是什么?
我想:
include 'project-subproj1', \
'project-subproj2', \
'project-subproj3', \
'project-subproj4'
但似乎
include 'project-subproj1',
'project-subproj2',
'project-subproj3',
'project-subproj4'
也有效。
settings.gradle
是一个常规的Groovy脚本吗?
答案 0 :(得分:4)
settings.gradle是一个常规的Groovy脚本吗?
是的,是的。
只是解释一下, Gradle 读取settings.gradle
文件,它实际上创建了一个Setting类的实例。
如果您在Setting
类上看到include方法规范,就像这样:
void include(java.lang.String[] strings);
因此该方法接受String
类的数组作为参数。在groovy中,您可以通过不同的方式调用此方法:
include "project1", "project2"
include "project1",
"project2"
include (['project1',
'project2'] as String[])
include ('project1',
'project2')
答案 1 :(得分:2)
是的,在Gradle中,以@model ValueVille.Models.AdminOrdersViewModel
@{
ViewBag.Title = "Orders";
}
<script src="/Scripts/jquery-3.1.1.min.js"
type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#Order-Update-Button").click(function () {
var ListOfUpdatedOrders = []
@{
foreach (var item in Model.OrdersInProgress)
{
@:ListOfUpdatedOrders.push({ id: "@item.OrderId", newStatus: document.getElementById("@item.OrderId") });
}
}
var dataJson = JSON.stringify({
"UpdatedOrdersList": ListOfUpdatedOrders
});
alert("running");
// Perform the ajax post
$.ajax({
contentType: "application/json; charset=utf-8",
type: "POST",
url: "@Url.Action("UpdateOrders", "Manage")",
data: dataJson,
dataType: "json",
success: function (data) {
alert(data);
},
error: function () {
alert("an error has occured!!!");
}
});
});
});
</script>
<div class="main-content-container">
<h1>New Orders In Progress<span id="update-order-test"></span></h1>
@Html.AntiForgeryToken()
<table class="panel panel-default table cart-table">
<tr>
<th>
Order ID
</th>
<th>
Total
</th>
<th>
Date
</th>
<th>
Status
</th>
</tr>
@foreach (var item in Model.OrdersInProgress)
{
<tr>
<td>
<a href="@Url.Action("OrderDetails", "Home", new { id = item.OrderId })">
@item.OrderId
@Html.HiddenFor(x => item.OrderId)
</a>
</td>
<td>
£@item.Total
@Html.HiddenFor(x => item.Total)
</td>
<td>
@item.OrderDate
@Html.HiddenFor(x => item.OrderDate)
</td>
<td>
@Html.DropDownListFor(m => item.Status, new SelectList(Model.OrderStatuses, "StatusId", "StatusName"), new { @id=item.OrderId })
</td>
</tr>
}
</table>
<h1>Orders Despatched</h1>
<table class="panel panel-default table cart-table">
<tr>
<th>
Order ID
</th>
<th>
Total
</th>
<th>
Date
</th>
<th>
Status
</th>
</tr>
@foreach (var item in Model.OrdersDespatched)
{
<tr>
<td>
<a href="@Url.Action("OrderDetails", "Home", new { id = item.OrderId })">
@item.OrderId
@Html.HiddenFor(x => item.OrderId)
</a>
</td>
<td>
£@item.Total
@Html.HiddenFor(x => item.Total)
</td>
<td>
@item.OrderDate
@Html.HiddenFor(x => item.OrderDate)
</td>
<td>
@Html.DropDownListFor(m => item.Status, new SelectList(Model.OrderStatuses, "Id", "StatusName"))
</td>
</tr>
}
</table>
<div class="panel-body form-group">
<div class="col-md-offset-2 col-md-10">
<input id="Order-Update-Button" type="submit" value="Update" class="btn btn-success" />
</div>
</div>
</div>
结尾的每个文件都是一个常规的Groovy脚本。 Gradle中的未脚本文件由其他文件扩展名指示(例如AdminOrders:60 Uncaught TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at HTMLInputElement.<anonymous> (AdminOrders:60)
at HTMLInputElement.dispatch (jquery-3.1.1.js:5201)
at HTMLInputElement.elemData.handle (jquery-3.1.1.js:5009)
)。
有几种约定可以定义特殊的groovy脚本:
.gradle
用于构建配置脚本.properties
作为构建设置脚本build.gradle
在settings.gradle
中获取全局初始化脚本
您可以创建其他init.gradle
Groovy脚本并通过USER_HOME/.gradle/
使用它们,或将它们放在特殊位置(例如.gradle
以将它们用作初始化脚本)。
所有这些脚本之间的主要区别在于它们应用的上下文。所有脚本首先实现Script
接口和第二个(特定于角色)接口。 Gradle文档调用此行为&#34;附加委托对象&#34;。
现在,我们甚至可以理解上面提到的代码示例:
build.gradle
settings.gradle
接口定义了include 'project-subproj1',
'project-subproj2',
'project-subproj3',
'project-subproj4'
方法,该方法以Groovy样式调用:没有括号和跨行。您也可以在Settings
文件中应用逻辑,例如在包括特定项目之前要求条件。
答案 2 :(得分:1)
是的, settings.gradle 是一个Groovy脚本,就像其他Gradle脚本一样。 settings.gradle 在初始化阶段执行,因此,它是指定子项目的多项目基本文件,您可以通过几种方式应用它们。
您也可以单独包含每个项目,最后效果相同。
include 'project-subproj1'
include 'project-subproj2'
include 'project-subproj3'
include 'project-subproj4'
可以遍历列表。
['project-subproj1',
'project-subproj2',
'project-subproj3',
'project-subproj4'].each({include it})
取决于您的感觉,您的感觉更清晰。