我正在尝试为 jsdt 找到 eclipse 的 jar 存储库
I am trying to locate eclipse's jar repositories for jsdt
为了处理一个项目,我试图找到一个可靠的存储库,其中提供了 jsdt 核心文件。
虽然 'org.eclipse.jdt:org.eclipse.jdt.core:3.14.0' 非常容易找到,但我的 Gradle 构建与 jsdt 的外观不同。我需要一些网络工具。
当我下载 eclipse 时,我可以找到里面的 jar,我可以找到组和工件 ID。但不是声明依赖关系的存储库。
我找到了 Jabylon 和 Alfresco,但它们是 2013 年的,我还发现了一个 2007 年的其他名称。但我试图找到他们实际放置这些罐子的位置,以便能够在当前版本中进行选择。
这是我要找的捆绑包:
捆绑符号名称:org.eclipse.wst.jsdt.core
它的组似乎是 org.eclipse.webtools.jsdt.bundles
有什么想法吗?
只有一些 Eclipse 插件 JAR 也打算在 Eclipse 之外用于普通(非 OSGi)应用程序,由 Eclipse 项目本身发布到 Maven 或 Gradle 存储库(例如 Eclipse JGit).
在 Eclipse 世界中, or simple folders containing the OSGi bundle JARs are used for so-called target platforms构建并运行一个JavaOSGi应用程序.
您要查找的工件是 e。 G。在 latest simultaneous release update site 但不能从 Maven 或 Gradle.
访问
请注意,一些 Eclipse 插件 JAR 只能在 OSGi 应用程序中工作(例如,当使用捆绑激活器 class 时)或在基于 Eclipse 的应用程序中(例如,当使用 Eclipse 扩展点时) .
为了将来参考,我构建了一个快速脚本来将 eclipse jar 分类到存储库结构中,这样就可以部署并拥有服务器。
import java.io.IOException;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.util.*;
import java.util.regex.*;
public final class DirToRepoStructure {
private static final Pattern jarNamePattern = Pattern.compile( "(.*)_(\d+\.\d+\.\d+)\.v?(\d+)\.jar" );
public static void main( String[] args ) throws IOException {
Path root = Paths.get( args[ 0 ] );
int rootNameCount = root.getNameCount( );
String rootName = root.getFileName( )
.toString( );
Path tempDir = Files.createTempDirectory( Paths.get( "." ), rootName );
System.out.println( "using temporary directory: " + tempDir );
Path achievePath = tempDir.getParent( )
.resolve( rootName + ".zip" );
System.out.println( "Archiving at: " + achievePath );
DirectoryStream< Path > stream = Files.newDirectoryStream( root, "*.jar" );
stream.forEach( jar -> {
String fullName = jar.getFileName( )
.toString( );
System.out.println( fullName );
Matcher matcher = jarNamePattern.matcher( fullName );
if ( matcher.matches( ) ) {
String jarName = matcher.group( 1 );
String version = matcher.group( 2 );
String snap = matcher.group( 3 );
System.out.println( "reading: " + jarName + ", " + version );
createJarStructure( tempDir, jar, jarName, version, snap );
}
else {
throw new IllegalArgumentException( "file name does not match regex" );
}
} );
try ( FileSystem zipFs = getZipFs( achievePath ) ) {
Files.walk( tempDir )
.skip( rootNameCount )
.forEach( source -> copyIntoZip( zipFs, source, rootNameCount ) );
}
}
private static void copyIntoZip( FileSystem zipFs, Path source, int rootNameCount ) {
try {
Path zipRoot = zipFs.getPath( "/" );
int tempRootNameCount = rootNameCount + 1;
int sourceNameCount = source.getNameCount( );
String newPathName = source.subpath( tempRootNameCount, sourceNameCount )
.toString( );
Path pathInZipFile = zipRoot.resolve( newPathName );
Files.copy( source, pathInZipFile, StandardCopyOption.REPLACE_EXISTING );
}
catch ( IOException e ) {
throw new RuntimeException( e );
}
}
private static void createJarStructure( Path tempDir, Path jar, String jarName, String version, String snap ) {
try {
Path jarRoot = jar.getParent( )
.resolve( jarName )
.resolve( version + "-SNAPSHOT" );
Path jarDirectory = Files.createDirectories( tempDir.resolve( jarRoot ) );
String shortSnap = snap.substring( 0,8 );
Path jarTarget = jarDirectory.resolve( jarName + "-" + version + "-"+ shortSnap + ".jar" ); Files.copy( jar, jarTarget );
}
catch ( IOException e ) {
throw new RuntimeException( e );
}
}
private static FileSystem getZipFs( Path archivePath ) throws IOException {
Map< String, String > env = new HashMap<>( );
env.put( "create", "true" );
env.put( "encoding", StandardCharsets.UTF_8.toString( ) );
System.out.println( archivePath );
URI uri = URI.create( "jar:file:" + archivePath.toAbsolutePath( ) );
return FileSystems.newFileSystem( uri, env );
}
}
为了处理一个项目,我试图找到一个可靠的存储库,其中提供了 jsdt 核心文件。
虽然 'org.eclipse.jdt:org.eclipse.jdt.core:3.14.0' 非常容易找到,但我的 Gradle 构建与 jsdt 的外观不同。我需要一些网络工具。
当我下载 eclipse 时,我可以找到里面的 jar,我可以找到组和工件 ID。但不是声明依赖关系的存储库。
我找到了 Jabylon 和 Alfresco,但它们是 2013 年的,我还发现了一个 2007 年的其他名称。但我试图找到他们实际放置这些罐子的位置,以便能够在当前版本中进行选择。
这是我要找的捆绑包: 捆绑符号名称:org.eclipse.wst.jsdt.core 它的组似乎是 org.eclipse.webtools.jsdt.bundles
有什么想法吗?
只有一些 Eclipse 插件 JAR 也打算在 Eclipse 之外用于普通(非 OSGi)应用程序,由 Eclipse 项目本身发布到 Maven 或 Gradle 存储库(例如 Eclipse JGit).
在 Eclipse 世界中,
您要查找的工件是 e。 G。在 latest simultaneous release update site 但不能从 Maven 或 Gradle.
访问请注意,一些 Eclipse 插件 JAR 只能在 OSGi 应用程序中工作(例如,当使用捆绑激活器 class 时)或在基于 Eclipse 的应用程序中(例如,当使用 Eclipse 扩展点时) .
为了将来参考,我构建了一个快速脚本来将 eclipse jar 分类到存储库结构中,这样就可以部署并拥有服务器。
import java.io.IOException;
import java.net.URI;
import java.nio.charset.StandardCharsets;
import java.nio.file.*;
import java.util.*;
import java.util.regex.*;
public final class DirToRepoStructure {
private static final Pattern jarNamePattern = Pattern.compile( "(.*)_(\d+\.\d+\.\d+)\.v?(\d+)\.jar" );
public static void main( String[] args ) throws IOException {
Path root = Paths.get( args[ 0 ] );
int rootNameCount = root.getNameCount( );
String rootName = root.getFileName( )
.toString( );
Path tempDir = Files.createTempDirectory( Paths.get( "." ), rootName );
System.out.println( "using temporary directory: " + tempDir );
Path achievePath = tempDir.getParent( )
.resolve( rootName + ".zip" );
System.out.println( "Archiving at: " + achievePath );
DirectoryStream< Path > stream = Files.newDirectoryStream( root, "*.jar" );
stream.forEach( jar -> {
String fullName = jar.getFileName( )
.toString( );
System.out.println( fullName );
Matcher matcher = jarNamePattern.matcher( fullName );
if ( matcher.matches( ) ) {
String jarName = matcher.group( 1 );
String version = matcher.group( 2 );
String snap = matcher.group( 3 );
System.out.println( "reading: " + jarName + ", " + version );
createJarStructure( tempDir, jar, jarName, version, snap );
}
else {
throw new IllegalArgumentException( "file name does not match regex" );
}
} );
try ( FileSystem zipFs = getZipFs( achievePath ) ) {
Files.walk( tempDir )
.skip( rootNameCount )
.forEach( source -> copyIntoZip( zipFs, source, rootNameCount ) );
}
}
private static void copyIntoZip( FileSystem zipFs, Path source, int rootNameCount ) {
try {
Path zipRoot = zipFs.getPath( "/" );
int tempRootNameCount = rootNameCount + 1;
int sourceNameCount = source.getNameCount( );
String newPathName = source.subpath( tempRootNameCount, sourceNameCount )
.toString( );
Path pathInZipFile = zipRoot.resolve( newPathName );
Files.copy( source, pathInZipFile, StandardCopyOption.REPLACE_EXISTING );
}
catch ( IOException e ) {
throw new RuntimeException( e );
}
}
private static void createJarStructure( Path tempDir, Path jar, String jarName, String version, String snap ) {
try {
Path jarRoot = jar.getParent( )
.resolve( jarName )
.resolve( version + "-SNAPSHOT" );
Path jarDirectory = Files.createDirectories( tempDir.resolve( jarRoot ) );
String shortSnap = snap.substring( 0,8 );
Path jarTarget = jarDirectory.resolve( jarName + "-" + version + "-"+ shortSnap + ".jar" ); Files.copy( jar, jarTarget );
}
catch ( IOException e ) {
throw new RuntimeException( e );
}
}
private static FileSystem getZipFs( Path archivePath ) throws IOException {
Map< String, String > env = new HashMap<>( );
env.put( "create", "true" );
env.put( "encoding", StandardCharsets.UTF_8.toString( ) );
System.out.println( archivePath );
URI uri = URI.create( "jar:file:" + archivePath.toAbsolutePath( ) );
return FileSystems.newFileSystem( uri, env );
}
}