我有一个Jenkins工作,它将我们的Java项目编译并发布到JBoss服务器.显然,服务器需要时间来启动和部署新代码.我有第二个Jenkins作业,它针对正在运行的JBoss实例运行Selenium测试.
我想让第二个(Selenium)工作作为第一个工作的后期构建动作自动执行(我已经完成了这个),但是我希望它延迟2分钟.延迟时间的数量并不重要,但我无法找到描述如何延迟构建后作业的开始的任何地方.我怎么做到这一点?
TL; DR版本:我希望能够使用Maven Mojo SQL插件通过mvn命令行随意创建/删除我的数据库模式中的任何给定表(或者为这些表加载数据).怎么样?
我是一名长期的Java开发人员,但在大多数情况下,我一直生活在一个ant基于世界的领域.我喜欢它的力量和显而易见性ant,以及它给我带来的控制力.然而,在我的新工作中,有一种推动使用maven.所以我决定使用我在家工作的项目来学习它.
我在不同的个人项目上设置的一件事是能够ant从命令行完全设置和拆除我的Postgres数据库.我可以单独或一致地对任何表格,序列和集成测试数据进行切片和切块.当然,这意味着我有大约一个ant目标,但它的效果非常好.我喜欢这个; 多年来它一直很好用.
在研究如何在周末在Maven中完成此任务时,我找到了Mojo SQL Maven插件.在查看使用情况页面(我使用该术语时,因为它实际上只是一个没有解释的半示例)和示例页面后,我能够对我的pom.xml文件进行一些更改.我在示例(postgressql)中修复了一些明显的拼写错误,并引用了PostgreSQL JDBC页面以确保我的JDBC连接字符串正确.我将粘贴所有pom.xml(修改为保护有罪)下面:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.myapp</groupId>
<artifactId>myapp</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>myapp</name>
<url>http://maven.apache.org</url>
<repositories>
<repository>
<id>JBoss</id>
<url>https://repository.jboss.org/nexus/content/groups/public/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.0.CR7</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sql-maven-plugin</artifactId>
<version>1.5</version>
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.3-606.jdbc4</version>
</dependency>
</dependencies>
<configuration> …Run Code Online (Sandbox Code Playgroud) settings.xml我的~/.m2目录中有一个Maven 文件; 它看起来像这样:
<settings>
<profiles>
<profile>
<id>mike</id>
<properties>
<db.driver>org.postgresql.Driver</db.driver>
<db.type>postgresql</db.type>
<db.host>localhost</db.host>
<db.port>5432</db.port>
<db.url>jdbc:${db.type}://${db.host}:${db.port}/dbname</db.url>
</properties>
</profile>
</profiles>
<activeProfiles>
<activeProfile>mike</activeProfile>
</activeProfiles>
<servers>
<server>
<id>server_id</id>
<username>mike</username>
<password>{some_encrypted_password}</password>
</server>
</servers>
</settings>
Run Code Online (Sandbox Code Playgroud)
我想两次使用这些属性
integration-test阶段就建立并拆除我的数据库.使用Maven过滤,这非常有效.servlet-context.xml在Maven resources:resources阶段将这些属性替换为我的文件.对于上部的属性settings.xml,例如${db.url},这可以正常工作. 我无法弄清楚如何将我的数据库用户名和(解密的)密码替换为Spring servlet-context.xml文件.我servlet-context.xml文件的相关部分如下:
<bean id="myDataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName"><value>${db.driver}</value></property>
<property name="url"><value>${db.url}</value></property>
<property name="username"><value>${username}</value></property>
<property name="password"><value>${password}</value></property>
</bean>
Run Code Online (Sandbox Code Playgroud)
这里的最终目标是让每个开发人员拥有自己的Maven设置(以及他们自己的机器上的数据库进行集成测试)......以及Jenkins服务器上的类似设置.我们不想共享通用用户名/密码/等.
我的问题非常类似于将Mockito模拟注入Spring bean时引发的问题.事实上,我相信那里接受的答案可能对我有用.但是,我有一个问题的答案,然后进一步解释,如果答案实际上没有我的答案.
所以我按照上述帖子中的链接访问了Springockito网站.我改变了我的内容test-config.xml,包括类似的内容:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mockito="http://www.mockito.org/spring/mockito"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.mockito.org/spring/mockito http://www.mockito.org/spring/mockito.xsd">
...
<mockito:mock id="accountService" class="org.kubek2k.account.DefaultAccountService" />
...
</beans>
Run Code Online (Sandbox Code Playgroud)
目前www.mockito.org重定向似乎有问题,所以我在https://bitbucket.org/kubek2k/springockito/raw/16143b32095b/src/main/resources/spring/mockito.xsd找到了XSD代码并更改了最终条目在xsi:schemaLocation中指向此bitbucket链接.
mvn test然后运行产生以下错误(为了可读性添加了换行符):
Caused by: org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException:
Line 43 in XML document from class path resource [spring/test-context.xml] is invalid;
nested exception is org.xml.sax.SAXParseException; lineNumber: 43; columnNumber: 91;
The prefix "mockito" for element "mockito:mock" is not bound.
Run Code Online (Sandbox Code Playgroud)
所以关于Springockito的问题是:是否有可能包括这个?我错过了什么?
现在,进一步解释......
我有一个接口,其实现我正在尝试测试:
public interface MobileService {
public Login login(Login login);
public User getUser(String accessCode, Date birthDate);
} …Run Code Online (Sandbox Code Playgroud) 我有一个正在由Sonar 3.0.1进行分析的Groovy项目.我们使用声纳探测器打开了重复的代码检测.
在一组文件中,它检测到11行重复的import语句.在另一组文件中,它检测到15行重复的成员声明.由于这个项目清楚地分离了数据库与显示对象(即使它们大部分相似,因此重复的成员声明),我想配置Sonar忽略这些重复集 - 我们认为它们是可接受的重复.
我怎么能告诉Sonar忽略重复的导入和/或成员声明,但是仍然因为方法中的重复代码而对我大喊大叫?
我正在使用Spring MVC作为我的控制器,JSP是我的表示层.
在我的Spring控制器中,我有:
model.put("issues", dataManager.getIssues());
model.put("functions", dataManager.getFunctions());
Run Code Online (Sandbox Code Playgroud)
所以现在在我的JSP中,我可以访问
${requestScope['issues']}
${requestScope['functions']}
Run Code Online (Sandbox Code Playgroud)
这一切都很好.但是为了我的代码是可扩展的,我想用来存储变量名issues和functions数据库,然后将通过一个属性来访问内部configs多数民众赞成被环绕在物体.所以我最终想要的是以下内容:
<c:forEach items="${configs}" var="cfg">
<c:if test="${cfg.configType == 'select'}">
<th>${cfg.header}</th>
<td><myTagLib:select values="${requestScope['${cfg.selectorName}']}" /></td>
</c:if>
</c:forEach>
Run Code Online (Sandbox Code Playgroud)
凡${cfg.selectorName}将举行要么issues还是functions在这个例子中.
我在Ubuntu Linux上运行IntelliJ IDEA 11.我有一个现有的项目,我已经使用构建脚本导入到IDEA中,该脚本执行大量<scp>任务.IntelliJ强调了我的所有<scp>任务并给了我一些信息,cannot resolve symbol即使我jsch-0.1.42.jar在IntelliJ中的Global Classpath以及此特定Ant文件的Additional Classpath上都有.

我需要做什么才能使IntelliJ识别<scp>为有效的任务?
在这里,我宣布同一类中的类动物实例.在c中它被认为是一个错误:
struct demo{
int anyvar;
struct demo anyvar1;
};
Run Code Online (Sandbox Code Playgroud)
因为它应该是一个无限的声明循环.
然后,为什么Java中允许这个代码?
class Animal{
Animal object1 = new Animal();
public static void main(String[] args)
{
Animal obj = new Animal();
obj.dostuff();
}
public void dostuff()
{
System.out.println("Compiles");
object1.dostuff();
}
public void keepdoingstuff()
{
System.out.println("Doing Stuff...");
object1.keepdoingstuff();
}
}
Run Code Online (Sandbox Code Playgroud)