Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
deac3c6e
提交
deac3c6e
authored
7 年前
作者:
Evgenij Ryazanov
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Get rid of SwitchSource
上级
cef97d64
隐藏空白字符变更
内嵌
并排
正在显示
3 个修改的文件
包含
0 行增加
和
198 行删除
+0
-198
build.html
h2/src/docsrc/html/build.html
+0
-9
Build.java
h2/src/tools/org/h2/build/Build.java
+0
-25
SwitchSource.java
h2/src/tools/org/h2/build/code/SwitchSource.java
+0
-164
没有找到文件。
h2/src/docsrc/html/build.html
浏览文件 @
deac3c6e
...
...
@@ -95,15 +95,6 @@ To run the build tool in shell mode, use the command line option <code>-</code>:
./build.sh -
</pre>
<h3>
Switching the Source Code
</h3>
<p>
The source code uses Java 7 features.
To switch the source code to the installed version of Java, run:
</p>
<pre>
build switchSource
</pre>
<h2
id=
"build_targets"
>
Build Targets
</h2>
<p>
The build system can generate smaller jar files as well. The following targets are currently supported:
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/build/Build.java
浏览文件 @
deac3c6e
...
...
@@ -23,7 +23,6 @@ import java.util.concurrent.TimeUnit;
import
java.util.zip.ZipEntry
;
import
java.util.zip.ZipFile
;
import
org.h2.build.code.SwitchSource
;
import
org.h2.build.doc.XMLParser
;
/**
...
...
@@ -231,34 +230,11 @@ public class Build extends BuildBase {
m
.
invoke
(
d
,
new
File
(
"coverage/report/index.html"
));
}
/**
* Switch the source code to the current JDK.
*/
@Description
(
summary
=
"Switch the source code to match the current JDK."
)
public
void
switchSource
()
{
switchSource
(
true
);
}
private
static
String
getTargetJavaVersion
()
{
return
System
.
getProperty
(
"version"
);
}
private
static
void
switchSource
(
boolean
enableCheck
)
{
try
{
String
version
=
getTargetJavaVersion
();
String
check
=
enableCheck
?
"+CHECK"
:
"-CHECK"
;
if
(
version
==
null
)
{
SwitchSource
.
main
(
"-dir"
,
"src"
,
"-auto"
,
check
);
}
else
{
SwitchSource
.
main
(
"-dir"
,
"src"
,
"-version"
,
version
,
check
);
}
}
catch
(
IOException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
private
void
compileMVStore
(
boolean
debugInfo
)
{
switchSource
(
debugInfo
);
clean
();
mkdir
(
"temp"
);
String
classpath
=
"temp"
;
...
...
@@ -282,7 +258,6 @@ public class Build extends BuildBase {
private
void
compile
(
boolean
debugInfo
,
boolean
clientOnly
,
boolean
basicResourcesOnly
)
{
switchSource
(
debugInfo
);
clean
();
mkdir
(
"temp"
);
download
();
...
...
This diff is collapsed.
Click to expand it.
h2/src/tools/org/h2/build/code/SwitchSource.java
deleted
100644 → 0
浏览文件 @
cef97d64
/*
* Copyright 2004-2018 H2 Group. Multiple-Licensed under the MPL 2.0,
* and the EPL 1.0 (http://h2database.com/html/license.html).
* Initial Developer: H2 Group
*/
package
org
.
h2
.
build
.
code
;
import
java.io.File
;
import
java.io.FileWriter
;
import
java.io.IOException
;
import
java.io.RandomAccessFile
;
import
java.util.ArrayList
;
/**
* Switched source code to a specific Java version, automatically to the current
* version, or enable / disable other blocks of source code in Java files.
*/
public
class
SwitchSource
{
private
final
ArrayList
<
String
>
enable
=
new
ArrayList
<>();
private
final
ArrayList
<
String
>
disable
=
new
ArrayList
<>();
/**
* This method is called when executing this application from the command
* line.
*
* @param args the command line parameters
*/
public
static
void
main
(
String
...
args
)
throws
IOException
{
new
SwitchSource
().
run
(
args
);
}
private
void
run
(
String
...
args
)
throws
IOException
{
String
dir
=
null
;
String
version
=
null
;
for
(
int
i
=
0
;
i
<
args
.
length
;
i
++)
{
String
a
=
args
[
i
];
if
(
"-dir"
.
equals
(
a
))
{
dir
=
args
[++
i
];
}
else
if
(
"-auto"
.
equals
(
a
))
{
enable
.
add
(
"AWT"
);
version
=
System
.
getProperty
(
"java.specification.version"
);
}
else
if
(
"-version"
.
equals
(
a
))
{
version
=
args
[++
i
];
}
else
if
(
a
.
startsWith
(
"-"
))
{
String
x
=
a
.
substring
(
1
);
disable
.
add
(
x
);
enable
.
remove
(
x
);
}
else
if
(
a
.
startsWith
(
"+"
))
{
String
x
=
a
.
substring
(
1
);
enable
.
add
(
x
);
disable
.
remove
(
x
);
}
else
{
showUsage
();
return
;
}
}
if
(
version
==
null
)
{
// ok
}
else
if
(
"1.5"
.
equals
(
version
))
{
disable
.
add
(
"Java 1.6"
);
disable
.
add
(
"Java 1.7"
);
}
else
if
(
"1.6"
.
equals
(
version
))
{
enable
.
add
(
"Java 1.6"
);
disable
.
add
(
"Java 1.7"
);
}
else
if
(
version
.
compareTo
(
"1.7"
)
>=
0
)
{
enable
.
add
(
"Java 1.6"
);
enable
.
add
(
"Java 1.7"
);
}
else
{
throw
new
IllegalArgumentException
(
"version: "
+
version
);
}
if
(
dir
==
null
)
{
showUsage
();
}
else
{
process
(
new
File
(
dir
));
}
}
private
void
showUsage
()
{
System
.
out
.
println
(
"Switched source code to a specific Java version."
);
System
.
out
.
println
(
"java "
+
getClass
().
getName
()
+
"\n"
+
" -dir <dir> The target directory\n"
+
" [-version] Use the specified Java version (1.4 or newer)\n"
+
" [-auto] Auto-detect Java version (1.4 or newer)\n"
+
" [+MODE] Enable code labeled MODE\n"
+
" [-MODE] Disable code labeled MODE"
);
}
private
void
process
(
File
f
)
throws
IOException
{
String
name
=
f
.
getName
();
if
(
name
.
startsWith
(
".svn"
))
{
return
;
}
else
if
(
name
.
endsWith
(
".java"
))
{
processFile
(
f
);
}
else
if
(
f
.
isDirectory
())
{
for
(
File
file
:
f
.
listFiles
())
{
process
(
file
);
}
}
}
private
void
processFile
(
File
f
)
throws
IOException
{
byte
[]
buffer
;
try
(
RandomAccessFile
read
=
new
RandomAccessFile
(
f
,
"r"
))
{
long
len
=
read
.
length
();
if
(
len
>=
Integer
.
MAX_VALUE
)
{
throw
new
IOException
(
"Files bigger than Integer.MAX_VALUE are not supported"
);
}
buffer
=
new
byte
[(
int
)
len
];
read
.
readFully
(
buffer
);
}
boolean
found
=
false
;
// check for ## without creating a string
for
(
int
i
=
0
;
i
<
buffer
.
length
-
1
;
i
++)
{
if
(
buffer
[
i
]
==
'#'
&&
buffer
[
i
+
1
]
==
'#'
)
{
found
=
true
;
break
;
}
}
if
(!
found
)
{
return
;
}
String
source
=
new
String
(
buffer
);
String
target
=
source
;
for
(
String
x
:
enable
)
{
target
=
replaceAll
(
target
,
"/*## "
+
x
+
" ##"
,
"//## "
+
x
+
" ##"
);
}
for
(
String
x
:
disable
)
{
target
=
replaceAll
(
target
,
"//## "
+
x
+
" ##"
,
"/*## "
+
x
+
" ##"
);
}
if
(!
source
.
equals
(
target
))
{
String
name
=
f
.
getPath
();
File
fileNew
=
new
File
(
name
+
".new"
);
FileWriter
write
=
new
FileWriter
(
fileNew
);
write
.
write
(
target
);
write
.
close
();
File
fileBack
=
new
File
(
name
+
".bak"
);
fileBack
.
delete
();
f
.
renameTo
(
fileBack
);
File
fileCopy
=
new
File
(
name
);
if
(!
fileNew
.
renameTo
(
fileCopy
))
{
throw
new
IOException
(
"Could not rename "
+
fileNew
.
getAbsolutePath
()
+
" to "
+
name
);
}
if
(!
fileBack
.
delete
())
{
throw
new
IOException
(
"Could not delete "
+
fileBack
.
getAbsolutePath
());
}
// System.out.println(name);
}
}
private
static
String
replaceAll
(
String
s
,
String
before
,
String
after
)
{
int
index
=
0
;
while
(
true
)
{
int
next
=
s
.
indexOf
(
before
,
index
);
if
(
next
<
0
)
{
return
s
;
}
s
=
s
.
substring
(
0
,
next
)
+
after
+
s
.
substring
(
next
+
before
.
length
());
index
=
next
+
after
.
length
();
}
}
}
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论