我有一个Gradle构建脚本(build.gradle),我在其中创建了一些任务.这些任务主要包括方法调用.被调用的方法也在构建脚本中.
现在,情况如下:
我正在创建相当数量的构建脚本,其中包含不同的任务,但使用原始脚本中的相同方法.因此,我想以某种方式提取这些"常用方法",因此我可以轻松地重复使用它们,而不是为我创建的每个新脚本复制它们.
如果Gradle是PHP,那么以下内容将是理想的:
//script content
...
require("common-methods.gradle");
...
//more script content
Run Code Online (Sandbox Code Playgroud)
但当然,这是不可能的.或者是吗?
无论如何,我怎样才能达到这个结果?这样做的最佳方法是什么?我已经阅读了Gradle文档,但我似乎无法确定哪种方法最简单,最适合这种方法.
提前致谢!
更新:
我设法在另一个文件中提取方法
(使用apply from: 'common-methods.gradle'),
所以结构如下:
parent/
/build.gradle // The original build script
/common-methods.gradle // The extracted methods
/gradle.properties // Properties used by the build script
Run Code Online (Sandbox Code Playgroud)
执行任务后build.gradle,我遇到了一个新问题:显然,方法在进入时无法识别common-methods.gradle.
关于如何解决这个问题的任何想法?
当我调整浏览器窗口大小时,我希望所有(或只是一些)图像自动调整大小.我发现了以下代码 - 但它没有做任何事情.
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="style.css" type="text/css" media="screen" />
</head>
<body>
<div id="icons">
<div id="contact">
<img src="img/icon_contact.png" alt="" />
</div>
<img src="img/icon_links.png" alt="" />
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
CSS
body {
font-family: Arial;
font-size: 11px;
color: #ffffff;
background: #202020 url(../../img/body_back.jpg) no-repeat top center fixed;
background-size: cover;
}
#icons {
position: absolute;
bottom: 22%;
right: 8%;
width: 400px;
height: 80px;
z-index: 8;
transform: rotate(-57deg);
-ms-transform: rotate(-57deg);
-webkit-transform: rotate(-57deg); …Run Code Online (Sandbox Code Playgroud) 尝试从SOAP响应中检索SOAP正文,但是收到此错误:
NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
Document doc = soapResMsg.getSOAPBody().extractContentAsDocument(); -- Exception is thrown here
org.dom4j.io.DOMReader d4Reader = new org.dom4j.io.DOMReader();
org.dom4j.Document d4doc = d4Reader.read(doc);
Run Code Online (Sandbox Code Playgroud)
使用Saaj1.4
对此有什么解决方法?
我的页面上有3个Twitter Bootstrap手风琴,每个都设置如下:
<div class="panel-group" id="accordion1">
<div class="panel panel-default">
<div class="panel-heading accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion1" data-target="#collapseOne1">
<h4 class="panel-title">Collapsible Group Item #1</h4>
</div>
<div id="collapseOne1" class="panel-collapse collapse">
<div class="panel-body">...</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion1" data-target="#collapseTwo1">
<h4 class="panel-title">Collapsible Group Item #2</h4>
</div>
<div id="collapseTwo1" class="panel-collapse collapse">
<div class="panel-body">...</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading accordion-toggle collapsed" data-toggle="collapse" data-parent="#accordion1" data-target="#collapseThree1">
<h4 class="panel-title">Collapsible Group Item #3</h4>
</div>
<div id="collapseThree1" class="panel-collapse collapse">
<div class="panel-body">...</div>
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
该id …
假设有以下XML结构:
<Data>
<DataFieldText>
<DataFieldName>Field #1</DataFieldName>
<DataFieldValue>1</DataFieldValue>
</DataFieldText>
<DataFieldText>
<DataFieldName>Field #2</DataFieldName>
<DataFieldValue>2</DataFieldValue>
</DataFieldText>
<DataFieldText>
<DataFieldName>Field #3</DataFieldName>
<DataFieldValue>3</DataFieldValue>
</DataFieldText>
</Data>
Run Code Online (Sandbox Code Playgroud)
使用Groovy XmlSlurper我需要执行以下操作:
从Data找到包含元素中的值Field #1的<DataFieldName>元素开始.如果找到则获取<DataFieldValue>属于同一级别的对应值.
我正在尝试使用特定的命名空间构建XML文档.我想要生成的最终文档看起来像这样:
<m:documentObject xmlns:m="http://www.myschema.com">
<sender>token</sender>
<receiver>token</receiver>
<payload>token</payload>
</m:documentObject>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的.
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Element requestElement = document.createElementNS("http://www.myschema.com", "documentObject");
document.appendChild(requestElement);
Element sender = document.createElement("sender");
requestElement.appendChild(sender);
Text senderText = document.createTextNode("Xmlsender");
sender.appendChild(senderText);
Element receiver = document.createElement("receiver");
requestElement.appendChild(receiver);
Text receiverText = document.createTextNode("Xmlreceiver");
receiver.appendChild(receiverText);
Element payload = document.createElement("payload");
requestElement.appendChild(payload);
Text payloadText = document.createTextNode("Xmlpayload");
payload.appendChild(payloadText);
StringWriter sw = new StringWriter();
StreamResult result = new StreamResult(sw);
DOMSource source = new DOMSource(requestElement);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.ENCODING, "utf-8");
transformer.transform(source, result);
String xmlString = sw.toString();
System.out.println(xmlString) …Run Code Online (Sandbox Code Playgroud) 我有一个XSL文件来传输另一个XSL文件.我希望命名空间声明在根标记上,而不是在每个元素上重复!
这是我的样式表:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:mynamespace="somenamespace" version="2.0">
<xsl:output method="xml" omit-xml-declaration="no" standalone="yes" indent="yes" />
<xsl:template match="myMatchedNode">
<mynamespace:tag>Some text i want inserted into the xsl</mynamespace:tag>
<xsl:copy>
<xsl:apply-templates select="@*|node()" /></xsl:copy>
</xsl:template>
</xsl:stylesheet>
Run Code Online (Sandbox Code Playgroud)
它输出这样的东西:
....
<mynamespace:tag xmlns:mynamespace="somenamespace">Some text i want inserted into the xsl</mynamespace:tag>
....
Run Code Online (Sandbox Code Playgroud)
如何强制命名空间声明到结果的根标记?!
我有一个div在其中一个table会撒谎.现在我希望div它的宽度自动设置为其中的宽度table.
例如:
<div>
<table>
<tr>
<td>Hello</td>
<td>World</td>
</tr>
<tr>
<td>Sample</td>
<td>Table</td>
</tr>
</table>
</div>
Run Code Online (Sandbox Code Playgroud)
我试着给float: left;它财产.它有效,但随后又产生了另一个问题.无论什么内容放在这个div放在空的空间右侧.
需要做什么?
我正在使用String值创建W3C Document对象.一旦我创建了Document对象,我就想在这个文档的根元素中添加一个命名空间.这是我目前的代码:
Document document = builder.parse(new InputSource(new StringReader(xmlString)));
document.getDocumentElement().setAttributeNS("http://com", "xmlns:ns2", "Test");
document.setPrefix("ns2");
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer aTransformer = tranFactory.newTransformer();
Source src = new DOMSource(document);
Result dest = new StreamResult(new File("c:\\xmlFileName.xml"));
aTransformer.transform(src, dest);
Run Code Online (Sandbox Code Playgroud)
我用作输入的内容:
<product>
<arg0>DDDDDD</arg0>
<arg1>DDDD</arg1>
</product>
Run Code Online (Sandbox Code Playgroud)
输出应该是什么样的:
<ns2:product xmlns:ns2="http://com">
<arg0>DDDDDD</arg0>
<arg1>DDDD</arg1>
</ns2:product>
Run Code Online (Sandbox Code Playgroud)
我还需要将前缀值和命名空间添加到输入xml字符串中.如果我尝试上面的代码,我得到这个例外:
NAMESPACE_ERR: An attempt is made to create or change an object in a way which is incorrect with regard to namespaces.
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
我写的一定数量的Gradle任务,不需要任何输入或输出.因此,UP-TO-DATE当我调用它们时,这些任务总是会得到状态.一个例子:
task backupFile(type: Copy) << {
//Both parameters are read from the gradle.properties file
from file(adjusting_file.replaceAll("\"", ""))
into file(backupDestinationDirectory + "/main/")
println "[INFO] Main file backed up"
}
Run Code Online (Sandbox Code Playgroud)
这导致以下输出:
:gradle backupFile
:backupFile UP-TO-DATE
Run Code Online (Sandbox Code Playgroud)
有没有办法迫使(ny)任务执行,无论什么事情?如果有,是否也可以切换任务执行(例如告诉构建脚本运行哪些任务以及忽略哪些任务)?
我不能省略<<标签,因为这会使任务总是执行,这不是我想要的.
非常感谢您的投入.