注意:我在这个问题的第一个版本中没有得到任何回复,因此我将其修改为更通用的...
上下文
我的项目分为几个maven模块和几个web应用程序.这是结构:
my-project
+ pom.xml
+-- commons
+-- persistence
+-- ...
+-- web-app-1
+-- web-app-2
+-- ...
Run Code Online (Sandbox Code Playgroud)
所有Web应用程序都共享公共资源,例如JS,CSS和图像文件.
web-app-X我决定创建另一个名为web-resourcesWAR项目的项目,而不是在每个项目中复制这些资源.结构如下:
my-project
+ pom.xml
+-- commons
+-- persistence
+-- ...
+-- web-app-1
+-- web-app-2
+-- ...
+-- web-resources
+-- pom.xml
+-- src/main/webapp
+-- web.xml (which is almost empty, just need to be present for Maven)
+-- web_resources
+-- css
+-- images
+-- javascript
Run Code Online (Sandbox Code Playgroud)
Maven的
在Maven 2(或Maven 3,因为我刚刚将我的项目迁移到maven 3.0.2),这个配置很容易管理,因为所有都web-app-X声明web-resources为依赖:
<groupId>foo.bar</groupId>
<artifactId>web-app-1</artifactId>
...
<dependencies>
<dependency>
<groupId>foo.bar</groupId> …Run Code Online (Sandbox Code Playgroud) 我想使用JaCoCo和Sonar工具测量集成测试的代码覆盖率.
为此,我启动了使用JaCoCo代理配置的Tomcat 5.5,以便从JaCoCo获取转储文件.
因此,我JAVA_OPTS为此设定:
set JAVA_OPTS=-Xrs -XX:MaxPermSize=256m -XX:PermSize=256m -XX:NewRatio=3 -Xms512m -Xmx1024m -XX:+UseParallelGC -javaagent:C:\dev\servers\jacoco-agent.jar=destfile=C:\dev\servers\jacoco.exec,append=true,includes=my.application.*
Run Code Online (Sandbox Code Playgroud)
当我启动Tomcat时,C:\dev\servers\jacoco.exec会生成文件,但不会填充任何数据.
我的服务器配置中有没有忘记的东西?
问候.
出于测试目的,我想使用SQL脚本和CSV文件创建和填充一些表.
所以我创建了一个像这样的SQL脚本:
CREATE TABLE T_FOO (
...
) as select * from CSVREAD('classpath:/foo.csv');
Run Code Online (Sandbox Code Playgroud)
该foo.csv文件存在,位于src/test/resources.
当这个脚本在Eclipse上运行时(其中src/test/resources定义为源目录,因此包含在类路径中),我收到以下错误:
Caused by: java.io.FileNotFoundException: resource /foo.csv
at org.h2.store.fs.FileSystemDisk.openFileInputStream(FileSystemDisk.java:388)
at org.h2.util.IOUtils.openFileInputStream(IOUtils.java:708)
at org.h2.tools.Csv.initRead(Csv.java:317)
at org.h2.tools.Csv.readResultSet(Csv.java:217)
at org.h2.tools.Csv.read(Csv.java:193)
... 49 more
Run Code Online (Sandbox Code Playgroud)
我做错了什么?如何正确使用classpath:协议加载CSV文件?
如果我把文件的完整路径(如... CSVREAD('C:\my-project\src\test\resources\foo.csv');),那么它的工作原理.但这不是我想做的原因:)
请注意,我使用最新版本的H2(1.3.153),因为我想使用该classpath:协议加载我的文件.
我想为我的单元测试加载SQL脚本文件.当我使用Spring 2.5.2时,我决定使用该SimpleJdbcTestUtils.executeScript()方法加载我的脚本文件,使用以下代码:
DriverManagerDataSource dataSource = ... // getting my DataSource defined in my Spring context
SimpleJdbcTemplate template = new SimpleJdbcTemplate(dataSource);
Resource resource = new ClassPathResource("/create-table.sql");
SimpleJdbcTestUtils.executeSqlScript(template, resource, true);
Run Code Online (Sandbox Code Playgroud)
如果我在create-table.sql文件中的一行中编写每个SQL语句,那么一切正常.但是如果我在多行上写一个语句,那么我会得到一个错误,即使语句是由a完成的;.
工作脚本:
CREATE TABLE T_FOO (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP, IS_ACTIVE INTEGER DEFAULT 0 NOT NULL);
CREATE TABLE T_BAR (ID NUMERIC PRIMARY KEY, DATEID TIMESTAMP, IS_ACTIVE INTEGER DEFAULT 0 NOT NULL);
Run Code Online (Sandbox Code Playgroud)
不工作的脚本:
CREATE TABLE T_FOO (
ID NUMERIC PRIMARY KEY,
DATEID TIMESTAMP,
IS_ACTIVE …Run Code Online (Sandbox Code Playgroud) 升级项目的所有Maven插件版本后,我遇到了以下问题:当我运行基本命令时mvn test -Dtest=SomeTest,构建完成,根本没有执行测试.实际上,我无法使用-Dtest参数运行任何测试(当然测试存在,并且在我执行时运行mvn test).
经过一些搜索后,问题似乎是由于使用了surefire 2.12插件.我已经测试了几个版本的Maven(2.2.1/3.0.2)和JUnit(4.7.x,4.8,4.10,甚至是3.8.x),但它们对我的问题没有影响.
那么也许我的项目有一些可能会对其产生影响的具体配置?无论如何,我创建了一个新项目,使用mvn archetype:generate(使用基本的org.apache.maven.archetypes:maven-archetype-quickstart).
我只修改了两件事pom.xml:使用JUnit 4.10(但它没有改变任何东西,我尝试过其他版本),并定义了surefire的版本:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>bar</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.11</version>
</plugin>
</plugins>
</build>
</project>
Run Code Online (Sandbox Code Playgroud)
我运行mvn test -Dtest=AppTest(由原型创建的默认JUnit测试):
------------------------------------------------------- T E S T S
------------------------------------------------------- Running foo.AppTest Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time
elapsed: 0.031 …Run Code Online (Sandbox Code Playgroud) 几个月以来,我在两个项目中使用大量的PL/SQL代码.
但是,我没有找到任何真正有趣的工具来开发这种语言.
目前,我的配置包括以下工具:
那么,开发PL/SQL应用程序的"完美"工具箱是什么?
我还读到SQL Developer 2.1引入了PL/SQL单元测试功能.有没有人有关于此功能的反馈和这个版本的SQL Developer(我仍然使用1.5)?
我知道我可以使用属性检索一些settings.xml参数,例如${settings.localRepository},获取本地存储库的位置.
现在假设我的settings.xml包含以下服务器定义:
<servers>
<server>
<id>server-dev</id>
<username>devuser</username>
<password>devpass</password>
</server>
<server>
<id>server-hom</id>
<username>homuser</username>
<password>hompass</password>
</server>
</servers>
Run Code Online (Sandbox Code Playgroud)
有没有办法,给定id一个服务器来获取任何参数的值?例如,类似的东西${settings.servers.server.server-dev.username}会返回devuser.
我已经尝试过以下方法:
${settings.servers.server.server-dev.username}
${settings.servers.server-dev.username}
${settings.servers.server[server-dev].username}
${settings.servers[server-dev].username}
Run Code Online (Sandbox Code Playgroud)
但他们都没有工作......
关于此页面,这是不可能的.但是,由于这是一个没有正确记录的功能,我仍然希望以这种方式做到这一点......
在我的应用程序中,我使用a JTextPane来显示一些日志信息.由于我想高亮显示本文中的某些特定行(例如错误消息),因此我将其设置contentType为" text/html".这样,我可以格式化我的文本.
现在,我创建一个JButton,将其内容复制JTextPane到剪贴板中.这部分很简单,但我的问题是,当我打电话时myTextPane.getText(),我会得到HTML代码,例如:
<html>
<head>
</head>
<body>
blabla<br>
<font color="#FFCC66"><b>foobar</b></font><br>
blabla
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
而不是只获取原始内容:
blabla
foobar
blabla
Run Code Online (Sandbox Code Playgroud)
有没有办法只获取我JTextPane的纯文本内容?或者我是否需要自己将HTML转换为原始文本?
我们考虑以下代码:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss dd/MM/yyyy", Locale.US);
long start = sdf.parse("10:30:00 30/09/2009").getTime();
long end = sdf.parse("10:30:00 30/10/2009").getTime();
Calendar c = Calendar.getInstance(Locale.US);
c.setTimeInMillis(start);
System.out.println("Start = " + c.getTime());
c.setTimeInMillis(end);
System.out.println(" End = " + c.getTime());
Run Code Online (Sandbox Code Playgroud)
运行此代码段时,我有以下输出:
Start = Wed Sep 30 10:30:00 CEST 2009
End = Fri Oct 30 10:30:00 CET 2009
Run Code Online (Sandbox Code Playgroud)
为什么我会得到不同的时区?
请注意,如果我在8月设置第一个日期而在9月设置第二个日期,则输出将在两种情况下显示相同的时区:
long start = sdf.parse("10:30:00 30/08/2009").getTime();
long end = sdf.parse("10:30:00 30/09/2009").getTime();
Run Code Online (Sandbox Code Playgroud)
将显示:
Start = Sun Aug 30 10:30:00 CEST 2009
End = Wed Sep 30 10:30:00 CEST …Run Code Online (Sandbox Code Playgroud)