Как создать и опубликовать полезную библиотеку Java

9

Недавно я работал над классом Java, который генерирует перестановки для каждого списка объектов. В любом случае, я хотел бы, чтобы эта библиотека была представлена ​​публике, поэтому у меня есть несколько вопросов:

  • Большинство библиотек я вижу , есть этот сложный пакет именование, в частности , в том числе com/ org. Есть соглашение для них или permutationsпакет достаточно?
  • Есть ли определенный формат для публикации? Должен ли я включить отдельные WAR для исходного кода / Javadoc?
  • У меня есть файлы в хранилище GitHub. Я думаю, что могу предоставить файлы там, но как мне заставить людей найти мой репо?
Амир Рахум
источник
Конвенции для пакета именования является обращенным доменом интернета
Daniel Моура
2
А если у меня нет домена?
Амир Рахум
1
@ Амир: Тогда я думаю, что может быть что-то подобное amirrachum.util.permutationsможет быть хорошим.
FrustratedWithFormsDesigner
Что-то еще, о чем вы, вероятно, хотите подумать - как вы хотите лицензировать этот код? Может ли кто-нибудь сделать с ним все, что захочет? Вы хотите, чтобы он использовался только в проектах FOSS, или это нормально для вас, если он используется в проприетарном программном обеспечении (при условии, что они вам заслужили)? Посмотрите на различные лицензии с открытым исходным кодом (GPL, LGPL, Mozilla, Apache, MIT, BSD) и решите, какую из них вы хотите использовать.
MatrixFrog

Ответы:

9
  • Стандартный способ публикации (помимо исходного кода на GitHub) состоит в том, чтобы иметь официальные выпуски JAR / WAR для Maven Central, которые многие инструменты сборки (Maven, Gradle, Ant / Ivy) используют для включения библиотек в качестве зависимости. Для этого лучше всего пройти через процесс Nexus .

  • Также считается удобным размещать те же файлы JAR / WAR в репозитории с кодом, например Sourceforge или GitHub.

  • С точки зрения вашего домена. Я рекомендую вам купить firstnamelastname.net/org/com и использовать его в качестве схемы именования (например, для меня это net.martijnverburg.foobar). В противном случае использование домена github, как предложено @Daniel Moura, является хорошим.

  • Чтобы публиковать его, писать об этом в блоге, об этом в Твиттере, отправлять его в новости хакеров, reddit, digg, slashdot, dzone, TSS, javaworld и т. Д.

НТН!

Мартейн Вербург
источник
+1 для процесса Nexus - очень полезно для привлечения других разработчиков к использованию, и, следовательно, для проверки вашей библиотеки
Гэри Роу
3

Если вы отправили свой код на GitHub, то поделиться JitPack с вашей библиотекой (jar) легко .

Вашим пользователям нужно будет просто добавить репозиторий в свой build.gradle:

repositories {
    mavenCentral()
    maven { url "https://jitpack.io" }
}

а затем ваш репозиторий GitHub в качестве зависимости:

dependencies {
    // ...
    compile 'com.github.YourUsername:Repo:Release'
}

JitPack действует как репозиторий Maven, похожий на Maven Central. Приятно то, что вам не нужно загружать свою библиотеку. За кулисами JitPack проверит код из GitHub и скомпилирует его. Когда вы публикуете новую версию на GitHub, она становится доступной для использования другими.

Существует также руководство о том, как подготовить проект и примеры для добавления Jar-источников.

Не обязательно иметь доменное имя, поэтому ваш groupId становится com.github.Username. Вы также можете использовать это для именования пакетов.

Андрейс
источник
2

У большинства библиотек, которые я вижу, есть такое сложное именование пакетов, в частности, com / org. Есть ли соглашение для них или пакет перестановок достаточно?

Есть рекомендации от Oracle о том, как назвать ваши пакеты . Причиной такого соглашения об именах является минимизация дубликатов. Если все просто использовали короткие, простые имена, становится более вероятным, что проект будет включать два permutationпакета. Если бы одно имя класса было одинаковым, возникли бы конфликты имен. Вещи могут запутаться для разработчика, если нет конфликтов имен, которые мешают разрешению классов.

Если у вас есть доменное имя, я бы предложил использовать это. Если вы размещаете хостинг на таком сервисе, как GitHub или Sourceforge, достаточно будет указать путь к вашему проекту. Независимо от того, будьте явными, чтобы предотвратить конфликты или путаницу.

Есть ли определенный формат для публикации? Должен ли я включить отдельные WAR для исходного кода / Javadoc?

Там нет конкретного формата. По крайней мере, источник и скрипт сборки соглашения (Make, Ant, Maven). Хорошо иметь предварительно скомпилированные файлы JAR или WAR, но это не обязательно. Некоторые проекты включают Javadoc в библиотеку, другие могут создавать два JAR-файла (один с Javadoc, а другой без). Также может быть хорошей идеей просто опубликовать свой Javadoc в Интернете, если это допускает решение для размещения вашего проекта.

У меня есть файлы в хранилище GitHub. Я думаю, что могу предоставить файлы там, но как мне заставить людей найти мой репо?

Рекламируйте это. Начните показывать это нескольким друзьям. Блог об этом. Поделитесь ссылкой в ​​интернете. Найдите человека, у которого есть проблема, которую он может решить с помощью этой библиотеки (но не забудьте сообщить, что вы сделали библиотеку).

Томас Оуэнс
источник