Я пытаюсь найти репозитории jar eclipse для jsdt

Для работы над проектом я пытаюсь найти надежный репозиторий, в котором доступен основной файл jsdt.

Хотя «org.eclipse.jdt:org.eclipse.jdt.core:3.14.0» было очень легко найти, у меня не тот же вид с jsdt для моей сборки Gradle. И мне нужны некоторые веб-инструменты.

Когда я загружаю eclipse, я могу найти банку внутри и найти идентификаторы группы и артефакта. Но не репозиторий для объявления зависимости.

Я нашел Jabylon и Alfresco, но они из 2013 года, я также нашел один под другим именем из 2007 года. Но я пытаюсь найти, где они на самом деле ставили эти банки, чтобы иметь возможность выбирать среди текущих версий.

Это пакет, который я ищу: Bundle-SymbolicName: org.eclipse.wst.jsdt.core Кажется, его группа org.eclipse.webtools.jsdt.bundles

Любые идеи?


person Victor    schedule 16.09.2018    source источник
comment
Только одна идея, которая вам не поможет: ваш вопрос здесь не по теме.   -  person GhostCat    schedule 16.09.2018
comment
Я не пытаюсь попросить порекомендовать или найти книгу, инструмент, библиотеку программного обеспечения, учебник или что-то еще за пределами сайта. Я точно знаю, какую библиотеку использовать и как ее использовать. однако коды eclipse сильно развиваются, и главная страница загрузки бесполезна для maven/gradle. у идентификатора группы есть другие имена, которые я мог пропустить при просмотре jcenter и других. Я ищу способ объявить эту конкретную библиотеку в gradle.   -  person Victor    schedule 16.09.2018
comment
(это проблема с отсутствующей зависимостью, я не знаю, как это может относиться к теме: порекомендовать или найти книгу, инструмент, библиотеку программного обеспечения, учебник или другое за пределами сайта)   -  person Victor    schedule 16.09.2018
comment
Значит, надежный репозиторий — это не сторонний ресурс? На ваш вопрос ответит ссылка, верно? Только ссылка, если быть точным. Что точно помещает его в эту категорию не по теме.   -  person GhostCat    schedule 16.09.2018
comment
«Я пытаюсь найти, где они на самом деле помещают эти банки», а не рекомендацию для какой-либо ссылки», по вашему мнению, любая проблема с зависимостью от Android или современной Java будет актуальна. Моя группа тоже ошибается.   -  person Victor    schedule 16.09.2018
comment
например stackoverflow.com/questions/15654475/ -> разница в том, что мне нужны артефакты   -  person Victor    schedule 16.09.2018
comment
Только некоторые JAR-файлы подключаемых модулей Eclipse, которые также предназначены для использования вне Eclipse в простых (не OSGi) приложениях, публикуются в репозиториях Maven или Gradle (например, Eclipse JGit). В мире Eclipse вместо репозиториев Maven/Gradle используются p2 (артефакты, которые вы ищете, находятся здесь, но к нему нельзя получить доступ из Maven или Gradle).   -  person howlger    schedule 17.09.2018
comment
именно этого я и боялся. это печально, потому что это среда OSGI, а приложение предназначено для платформы на основе равноденствия. вот почему эта библиотека идеально подходит для этого. хорошо, если бы вы могли поместить это в ответ, я приму это. Я ждал подтверждения, прежде чем строить убер.   -  person Victor    schedule 17.09.2018
comment
@GhostCat Ответ не является ссылкой. Пожалуйста, не закрывайте этот вопрос как не по теме.   -  person howlger    schedule 17.09.2018
comment
@howlger Ну, вам нужно 5 голосов за оффтоп, близкий к работе. Прямо сейчас я там только мой голос. Так что, вероятно, это останется открытым. И, пожалуйста, спросите себя: будет ли ваш ответ работать для будущих пользователей без ссылок в нем?   -  person GhostCat    schedule 17.09.2018
comment
@GhostCat О какой ссылке вы говорите? Смотрите мой ответ, почему здесь нет такой ссылки как в большинстве случаев.   -  person howlger    schedule 17.09.2018
comment
@howlger Нравится тот, что на сайте обновлений NEON? Который уже немного устарел, потому что Photon не самая последняя вещь?   -  person GhostCat    schedule 17.09.2018
comment
@GhostCat Это касалось версии 3.14.0. Чтобы было понятнее, я добавил e. g. и вместо этого обратитесь к новому сайту обновлений последней версии. В среду Photon устареет, а 2018-09 станет последним.   -  person howlger    schedule 17.09.2018


Ответы (2)


Только некоторые JAR-файлы подключаемых модулей Eclipse, которые также предназначены для использования вне Eclipse в простых (не OSGi) приложениях, публикуются самими проектами Eclipse в репозиториях Maven или Gradle (например, Eclipse JGit).

В мире Eclipse для таких - называется целевыми платформами для создания и запуска Java приложения OSGi.

Артефакты, которые вы ищете, e. грамм. на последнем сайте обновления одновременного выпуска, но к нему нельзя получить доступ из Maven или Gradle.

Обратите внимание, что JAR-файлы некоторых подключаемых модулей Eclipse работают только в приложении OSGi (например, при использовании класса активатора пакета) или в приложении на основе Eclipse (например, при использовании точек расширения Eclipse).

person howlger    schedule 17.09.2018

Для дальнейшего использования я создал быстрый скрипт для сортировки jar-файлов eclipse в структуру репозитория, чтобы их можно было развернуть, если они могут и имеют сервер.

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 );

    }
}
person Victor    schedule 17.09.2018