我有一个我正在处理的groovy脚本,它使用@Grab注释导入依赖项.此脚本将在IDEA和命令行中运行.但是,在IDE中,导入以红色显示(不可解析),并且不会对如此导入的类进行自动完成.
我通过代理访问公司存储库,该代理已在IDEA中配置为Http代理(模块应该是,并且在我本地的.m2 repo中!)
任何人都有任何想法(没有双关语!)?
我正在使用IntelliJ IDEA 12.5 Ultimate(IU-129.1135),JRE 1.7和Groovy 2.1.6
我正在使用Jenkins创建构建管道,并需要在管道中触发部署步骤.这意味着手动过程(构建自动进行,定时,然后在部署阶段停止,等待手动授权).
我还需要使用前一步骤中的参数触发部署步骤.
因此,使用'参数化插件',我可以在作业之间传递参数.我可以触发自动OR手动触发的下游作业(不确定这是否是标准功能,或者某些插件添加了手动版本).
但是,我找不到任何方法来触发手动参数化作业.
有谁知道这样做的方法?我可以使用另一个插件吗?
我需要这些参数的原因是我创建了一个通用部署作业,需要传入模块名称和maven版本来部署.我可以为每个模块创建特定的部署作业,但这将非常痛苦.
我也一直在考虑以下,但它似乎是一个kludge:
这种方法存在各种问题
当我以前用C/C++编写库时,我养成了使用方法返回编译日期/时间的习惯.这总是被编译到库中,因此可以区分库的构建.我通过在代码中返回#define得到了这个:
C++:
#ifdef _BuildDateTime_
char* SomeClass::getBuildDateTime() {
return _BuildDateTime_;
}
#else
char* SomeClass::getBuildDateTime() {
return "Undefined";
}
#endif
Run Code Online (Sandbox Code Playgroud)
然后在编译时我有一个'-D_BuildDateTime_ =Date
在构建脚本中 '.
有没有办法在Java中实现这个或类似的,而无需记住手动编辑任何文件或分发任何单独的文件.
我从同事那里得到的一个建议就是让ant文件在类路径上创建一个文件并将其打包到JAR中并让它通过该方法读取.
类似的东西(假设创建的文件名为'DateTime.dat'):
// I know Exceptions and proper open/closing
// of the file are not done. This is just
// to explain the point!
String getBuildDateTime() {
return new BufferedReader(getClass()
.getResourceAsStream("DateTime.dat")).readLine();
}
Run Code Online (Sandbox Code Playgroud)
在我看来,这是一个黑客,可以被外面有类似命名文件的人规避/破坏在JAR,但是在类路径上.
无论如何,我的问题是在编译时是否有任何方法将一个常量注入一个类
编辑
我考虑在JAR中使用外部生成的文件的原因是因为这是一个库并将嵌入到客户端应用程序中.这些客户端应用程序可能会定义自己的类加载器,这意味着我不能依赖标准的JVM类加载规则.
我个人的偏好是使用serg10建议的JAR文件中的日期.
我正在编写一个简单的脚本来替换环境变量中的文本和其他文本.我遇到的麻烦是从其他变量中提取替换或替换文本
SET a=The fat cat
ECHO %a%
REM Results in 'The fat cat'
ECHO %a:fat=thin%
REM Results in 'The thin cat'
Run Code Online (Sandbox Code Playgroud)
工作正常(输出是'肥猫'和'瘦猫'
但是,如果'fat'或'thin'在变量中,它就不起作用
SET b=fat
ECHO %a:%c%=thin%
REM _Should_ give 'The thin cat'.
REM _Actually_ gives '%a:fat=thin%' (the %c% is evaluated, but no further).
REM using delayed evaluation doesn't make any difference either
ECHO !a:%c%=thin!
REM Actual output is now '!a:fat=thin!'
Run Code Online (Sandbox Code Playgroud)
我知道这可以像以前在博客中看到的那样完成,但我从未保存过博客的链接.
有人有主意吗?
PS.我在Windows 7上运行脚本
PPS.我知道这在Perl/Python /其他脚本语言中更容易选择,但我只是想知道为什么那些应该很容易的事情并不是很明显.
购买力平价.我还尝试了明确打开延迟扩展的脚本
SETLOCAL enabledelayedexpansion
Run Code Online (Sandbox Code Playgroud)
这没什么区别.
我目前正在查看 spring-boot,但无法访问构建中的 repo.spring.io maven 存储库。
我已经创建了初始 Gradle 构建文件,但是当我第一次尝试运行构建时收到 401(未经授权)响应。我试过手动拉下 POM/JAR(手动部署到我的本地存储库),但再次收到 401。
如果我浏览到相关的文件夹,然后单击JAR(POMS似乎是OK),我这里收到一个401错误太(回应是:The server http://repo.spring.io:80 requires a username and password. The server says: Artifactory Realm
)
有人可以将我定向到我可以从中提取这些文件的存储库吗?或者,有人可以指导我到哪里可以获得此 repo 的凭据吗?
谢谢
我试图按照D应用程序在各个地方给出的示例.通常在学习语言时,我会从示例应用程序开始并自行更改,纯粹是为了测试内容.
引起我注意的一个应用是计算传入的文本块中的单词的频率.由于字典是在关联数组中构建的(元素存储频率,键是单词本身),输出没有任何特定的顺序.因此,我尝试根据网站上给出的示例对数组进行排序.
无论如何,这个例子显示了一个lambda'排序!(...)(数组);' 但是当我尝试代码时,dmd将无法编译它.
这是简化的代码:
import std.stdio;
import std.string;
void main() {
uint[string] freqs;
freqs["the"] = 51;
freqs["programming"] = 3;
freqs["hello"] = 10;
freqs["world"] = 10;
/*...You get the point...*/
//This is the actual example given, but it doesn't
//seem to work, old D version???
//string[] words = array(freqs.keys);
//This seemed to work
string[] words = freqs.keys;
//Example given for how to sort the 'words' array based on
//external criteria (i.e. the frequency of the words from
//another array). This …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个应用程序来监视另一个Java进程,并在遇到某些目标时采取特定的操作.例如,如果一个线程死锁一段时间,请终止线程,如果内存使用量超过特定数量,发送电子邮件警报并终止进程等.
我的应用程序将作为一个独立的应用程序运行,监控特定的其他应用程序(本地,虽然我可以看到远程或本地没有区别).
我正在通过MXBeans监视外部JVM,但看不到一种干净的方法来杀死外部进程,而不是像'kill -9'这样的系统调用(顺便说一句,我在UNIX中工作).
有没有办法通过MXBean接口杀死JVM?
格雷厄姆
我在Ant文件中定义了一个POM,构建工作正常,从存储库中提取正确的工件,然而,工件:安装任务推送到'super-pom'而不是我指定的pom
我使用以下POM文件
<project name="my-proj" default="build"
xmlns:artifact="antlib:org.apache.maven.artifact.ant">
<!-- Define the Maven tasks -->
<path id="mvn.classpath"
path="${env.MAVEN_HOME}/lib/maven-ant-tasks-2.1.1.jar" />
<typedef resource="org/apache/maven/artifact/ant/antlib.xml"
uri="antlib:org.apache.maven.artifact.ant"
classpathref="mvn.classpath" />
<target name="set-deps">
<artifact:pom id="jar.pom" packaging="jar"
groupId="com.me" artifactId="my-proj"
version="1.0-SNAPSHOT">
<dependency groupId="commons-logging"
artifactId="commons-logging"
version="1.1.1"/>
</artifact:pom>
<artifact:dependencies filesetId="project.jar.files"
pomRefId="jar.pom"/>
</target>
<target name="compile" depends="set-deps">
<mkdir dir="${basedir}/output/casses"/>
<javac srcdir="${basedir}/src"
destdir="${basedir}/output/classes"
classpathref="project.jar.files" />
</target>
<target name="build" depends="compile">
<jar destfile="output/${project.name}.jar"
basedir="${basedir}/output/classes"/>
</target>
<target name="install" depends="build">
<echo message="Installing JAR file - ${project.name}.jar"/>
<echo message=" groupId - ${jar.pom.groupId}"/>
<echo message="artifactId - ${jar.pom.artifactId}"/>
<echo message=" version - ${jar.pom.version}"/>
<artifact:install …
Run Code Online (Sandbox Code Playgroud) 我正在尝试更新我的Jenkins设置中的Jelly脚本以通过电子邮件发送构建原因(构建触发器),但我找不到任何关于此的文档.
我知道它应该可用,因为构建页面将显示信息,但我希望它显示在正在分发的电子邮件中.
有谁知道我是否可以查询var,或者我可以调用Jenkins API调用来获取它?
嗨,我正在项目中使用Project Lombok(版本0.11.2).我安装了Intellij和Eclipse(STS),并将lombok与两个IDE集成(STS,通过lombok JAR,IntelliJ通过插件[版本0.4,发布于2012年1月22日]).
当我尝试在IntelliJ中使用'val'数据类型时,它无法识别结果类型,但是相同的代码在STS中有效.
这是IntelliJ插件的问题,还是插件不支持此功能?
在lombok 0.10.0中添加了val类型,因此不是新功能.