ban*_*lit 11 java gradle gradle-eclipse
我正在使用Gradle构建,其中包含:
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'eclipse'
repositories {
flatDir { dirs "${System.env.JAVA_HOME}/jre/lib" }
}
dependencies {
compile name: 'rt'
}
Run Code Online (Sandbox Code Playgroud)
它构建,这很棒,但是eclipse插件让我在rt.jar类上遇到困难:
访问限制:由于对所需库的限制,无法访问XMLSerializer类型/usr/local/apps/jdk1.8.0_11/jre/lib/rt.jar
我明白了
现在我知道你会告诉我不要使用那些课程.但你知道它是怎么回事,我正在研究一个古老的项目,我现在只需要让它工作.
我的第一个问题是:限制信息位于何处?
显然:我怎么能绕过那个?我想把它作为神器上传到我的Nexus仓库,还有什么比这更容易的?
说明:eclipse gradle中
有一个插件,可用于修改从gradle模型生成eclipse配置的行为。该插件具有一个子集功能,称为classpath允许修改.classpatheclipse 生成文件的功能。
码:
import org.gradle.plugins.ide.eclipse.model.AccessRule
apply plugin: 'java'
apply plugin: 'eclipse'
eclipse {
classpath {
file {
whenMerged {
def jre = entries.find { it.path.contains 'org.eclipse.jdt.launching.JRE_CONTAINER' }
jre.accessRules.add(new AccessRule('0', 'com/**'))
jre.accessRules.add(new AccessRule('0', 'sun/**'))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
来自: https : //discuss.gradle.org/t/buildship-1-0-18-is-now-available/19012(“访问规则”部分)
参数说明:
'0' =可访问'1' =无法访问'2' =灰心我的个人用法如下所示:
eclipse.classpath {
file.whenMerged {
entries.each { source ->
if (source.kind == 'con' && source.path.startsWith('org.eclipse.jdt.launching.JRE_CONTAINER')) {
source.accessRules.add(new AccessRule('0', 'sun/applet/AppletAudioClip'))
source.accessRules.add(new AccessRule('0', 'javax/swing/**'))
source.accessRules.add(new AccessRule('0', 'com/sun/java/swing/**'))
source.accessRules.add(new AccessRule('0', 'javafx/**'))
source.accessRules.add(new AccessRule('0', 'sun/net/www/protocol/**'))
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出是这样的:
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/">
<accessrules>
<accessrule kind="accessible" pattern="sun/applet/AppletAudioClip"/>
<accessrule kind="accessible" pattern="javax/swing/**"/>
<accessrule kind="accessible" pattern="com/sun/java/swing/**"/>
<accessrule kind="accessible" pattern="javafx/**"/>
<accessrule kind="accessible" pattern="sun/net/www/protocol/**"/>
</accessrules>
</classpathentry>
Run Code Online (Sandbox Code Playgroud)
经过测试并与之合作:
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |