0. 패키지 매니저란?
패키지 매니저는 프로그래밍 언어에서 사용되는 외부 라이브러리, 모듈, 프레임워크 등의 소프트웨어를 설치, 관리, 업데이트,삭제하는 도구입니다. 패키지 매니저는 인터넷에서 소스코드, 바이너리 파일를 다운로드하여 사용자의 로컬 컴퓨터에 설치합니다.
npm은 JavaScript 프로그래밍 언어에서 사용되는 패키지 매니저 입니다. Node.js를 위해 사용됩니다.
pip은 Python을 위한 패키지 매니저 입니다.
mavenCentral과 jcenter는 Java를 위한 패키지 매니저입니다. mavenCentral은 Maven 빌드 도구를 사용하는 프로젝트에서 사용되고, jcenter는 Gradle 빌드 도구를 사용하는 프로젝트에서 사용됩니다.
이러한 패키지 매니저들을 통해 다양한 라이브러리, 모듈, 프레임워크를 쉽게 다운로드하고 관리할 수 있게 도와주므로 개발자들이 소프트웨어를 빠르고 쉽게 개발할 수 있도록 돕습니다.
1. maven repository
mvn repository 링크 : https://mvnrepository.com/
Maven Repository는 Maven 빌드 도구에서 프로젝트에 필요한 라이브러리를 다운로드 하고 관리하는 중앙 저장소입니다.
Maven 빌드 도구는 pom.xml 파일로 라이브러리들을 명시합니다.
Maven Repository의 대표적인 중앙 저장소로서 mavenCentral과 jcenter가 있습니다.
mavenCentral은 Maven 빌드 도구에서 기본적으로 사용되는 중앙 저장소입니다. 필요한 의존성 라이브러리들을 다운로드하고 관리하는데 사용됩니다. 전 세계의 다양한 라이브러리 개발자들이 업로드한 라이브러리들을 보유하고 있으며, 해당 라이브러리들을 검색해 다운로드할 수 있습니다.
jcenter는 Bintray라는 클라우드 기반 중앙 저장소입니다. MavenCentral과 마찬가지로 필요한 의존 라이브러리를 다운로드하고 관리하는데 사용됩니다. jcenter는 더 빠르고 안정적인 검색 속도를 가지고 있습니다. 하지만 2021년 2월부터 jcenter는 개발 중단되어 2022년 2월 1일 부로 jcenter에 호스팅된 라이브러리는 Bintray로 이전될 예정입니다. 따라서 앞으로 mavenCentral을 사용하는 것이 안정적인 라이브러리 다운로드를 위해 바람직하다고 볼 수 있습니다.
2. Gradle
Gradle은 JVM 기반 오픈소스 빌드 자동화 도구입니다. Ant, Maven과 같은 다른 빌드 도구와 비교해 높은 유연성과 성능을 제공합니다. Groovy 언어로 빌드 스크립트를 작성할 수 있습니다.
Gradle은 간단한 빌드에서 복잡한 멀티 프로젝트 빌드까지 다양한 상황에서 사용될 수 있습니다. 또한 다양한 플러그인을 제공하여 Java, Groovy, Kotlin 등의 언어 뿐만 아니라 C/ C++, Python, JavaSript 등의 언어를 포함한 환경에서 사용할 수 있습니다.
Gradle 빌드 스크립트는 Groovy DSL, Kotlin DSL을 사용해 작성됩니다. Groovy DSL은 익숙한 Java 구문을 사용해 빌드 스크립트를 작성할 수 있습니다. Kotlin DSL은 Kotlin 프로그래밍 언어를 사용하여 빌드 스크립트를 작성할 수 있으며, IDE지원 및 타입 안정성 등의 장점을 제공합니다.
Gradle은 기본적으로 테스트, 컴파일, 패키징 등의 빌드 태스크를 제공합니다. 또한 빌드 태스크를 추가, 수정하여 프로젝트에 맞게 변경할 수 있습니다.
Gradle은 높은 성능을 제공하는데 빌드시간을 줄이기 위해 캐시를 사용해 변경되지 않은 경우에는 이전ㄱ 결과를 사용해 빌드 시간을 단축 시킵니다. 또한, Gradle은 멀티 쓰레드를 지원하여 병렬로 처리해 빌드 시간을 단축 시킵니다.
마지막으로, Gradle은 Android 앱 개발에서 널리 사용됩니다. Android Studio와 함께 제공되는 Gradle Plugin을 사용하여 Android 앱을 빌드할 수 있으며 다양한 빌드 태스크를 처리할 수 있습니다.
'ETC' 카테고리의 다른 글
웹 개발 시 유용한 사이트 모음 - 2 : Flask (0) | 2023.03.29 |
---|---|
.idea는 .gitignore에 포함시켜야할까? (0) | 2023.03.29 |
[Docker] 도커 입문 (0) | 2023.03.23 |
개발자들을 위한 유용한 커맨드 모음 (0) | 2023.03.16 |
웹 개발 시 유용한 사이트 모음 - 1 : 폰트, 아이콘, HTML (0) | 2023.03.16 |