인텔리제이를 사용하며 모듈이 무엇인지, 패키지가 무엇인지, mark directory as 기능이 무엇인지 알지도 못한채 막 사용하다보니 경로도 꼬이고 실행도 안되는 불상사가 생겨 이젠 그러지 않기위해 정리해보는 모듈과 패키지,mark directory as
▶모듈이란?:
-모듈은 IntelliJ 프로젝트의 구성요소. 여러 모듈을 포함하는 프로젝트를 만들 수 있다.
-각 모듈은 독립적인 컴파일 단위이며, 소스 코드, 리소스 파일, 테스트 코드 등을 포함할 수 있다.
→그럼 여기서 독립적인 컴파일 단위란?
모듈이 독립적인 컴파일 단위라는 것은 각 모듈이 개별적으로 컴파일되고 실행될 수 있다는 의미.
각 모듈은 자체적으로 소스 코드, 리소스 파일, 종속성 등을 포함하고 있으며, 다른 모듈과는 독립적으로 컴파일 및 빌드될 수 있다.
모듈의 독립성의 이점:
- 모듈 간의 의존성 관리: 각 모듈은 자체적으로 필요한 종속성을 가질 수 있으며, 이를 통해 모듈 간의 의존성을 명확히 할 수 있다. 이는 코드의 유지 보수성과 재사용성을 향상시킨다
- 병렬 빌드 지원: 독립적인 모듈은 동시에 병렬로 컴파일 및 빌드될 수 있다. 이는 개발자들이 프로젝트를 빠르게 빌드하고 실행하는 데 도움을 준다
- 모듈 단위의 테스트: 각 모듈은 개별적으로 테스트될 수 있으며, 테스트 결과는 해당 모듈에 대한 신뢰성을 검증하는 데 도움을 준다
- 모듈 단위의 배포: 독립적인 모듈은 개별적으로 배포될 수 있다. 이는 어플리케이션의 일부를 업데이트하거나 확장할 때 전체 애플리케이션을 다시 배포할 필요 없이 해당 모듈만 업데이트할 수 있도록 해준다
- 모듈은 프로젝트의 빌드, 실행, 디버깅 설정을 제어하는 데 사용된다
- 모듈은 프로젝트 내의 독립된 작업 단위로 볼 수 있다.
- 모듈은 소스 코드와 리소스 파일을 포함하고 필요한 라이브러리와 의존성을 정의한다
- 각 모듈은 고유한 클래스 패스와 컴파일 옵션을 가질 수 있다.
- 모듈은 다른 모듈과 의존성을 가질 수 있다.
- 모듈은 프로젝트의 빌드, 실행, 디버깅 설정을 제어하는 데 사용된다
▶패키지란?
- 패키지는 Java 프로그램에서 코드를 구조화하는 방법
- 패키지는 클래스와 인터페이스를 그룹화하고, 네임스페이스를 관리하며, 코드의 가독성과 유지 보수성을 향상시킨다
- 패키지는 클래스와 인터페이스를 논리적으로 그룹화한다
- 패키지는 네임스페이스를 제공하여 충돌을 방지한다
- 패키지는 다른 패키지를 포함할 수 있다.
네임 스페이스란?
-네임스페이스는 패키지의 식별자로 사용되는 개념
- 패키지는 코드를 구조화하고 모듈화하는 데 사용되는 디렉토리 구조
- 네임스페이스는 패키지의 이름을 고유하게 식별하기 위해 사용된다
ex) "com.example"라는 패키지는 "com" 네임스페이스에 속하고, "example"라는 서브네임스페이스에 속한다
▶ 따라서, 모듈은 IntelliJ 프로젝트의 구성 요소로서 독립된 작업 단위를 나타내며, 소스 코드와 리소스 파일을 포함하고 필요한 라이브러리와 의존성을 정의하며, 패키지는 코드를 구조화하는 방법으로 클래스와 인터페이스를 그룹화하고 네임스페이스를 제공한다
++mark directory as 기능에 대하여
- IntelliJ에서 "Mark Directory as" 기능을 사용하여 다양한 디렉토리를 표시할 수 있다
- Sources Root: 이 폴더는 컴파일되어야 하는 프로덕션 코드를 포함한다. 소스 폴더에는 설정 파일(.idea 폴더나 .iml 파일)을 넣지 않는 것이 좋다.
- Test Sources Root: 이 폴더는 프로덕션 코드와 별도로 테스트 코드를 관리하는 폴더. 일반적으로 소스 폴더와 테스트 소스 폴더의 컴파일 결과는 서로 다른 폴더에 배치된다
- Resources Root: 이 폴더는 애플리케이션에서 사용되는 리소스 파일(이미지, XML 및 프로퍼티 파일 등)을 포함한다. 빌드 과정에서 리소스 파일은 기본적으로 출력 폴더로 복사된다.
- Test Resources Root: 이 폴더는 테스트에 사용되는 리소스 파일(예: .sql 픽스처)을 포함한다
- Excluded: 이 폴더는 IntelliJ에서 색인화하거나 관리하지 않아야 하는 파일이나 폴더를 포함한다 ex)프로젝트 루트에 데이터베이스와 같은 코드 베이스에 속하지 않는 디렉토리 트리가 있다면 이를 제외 처리해야 한다
- Generated Sources Root: 이 폴더에는 빌드 도구나 다른 프로세스에서 생성된 소스 코드가 있습니다. ex) Play Framework(2.x)는 프로젝트를 빌드할 때 HTML 및 라우팅 정보에서 Scala 코드를 자동으로 생성한다. 생성된 소스는 IDE가 참조를 해결할 수 있도록 표시되어야 하며(코드의 유효성을 확인함), 직접 편집하지 않아야 한다.
=> 원하는 기능을 선택하여 디렉토리를 마크할 수 있다
vending-machine
├── src
│ ├── main
│ │ └── java // Sources Root
│ │ └── com
│ │ └── example
│ │ └── Main.java
│ ├── test
│ │ └── java // Test Sources Root
│ │ └── com
│ │ └── example
│ │ └── MainTest.java
│ └── resources // Resources Root
│ └── config.properties
├── test-resources // Test Resources Root
│ └── test-config.properties
├── excluded-folder // Excluded
│ └── excluded-file.txt
└── generated-sources // Generated Sources Root
└── generated-code.java
- src/main/java 디렉토리는 "Sources Root"로 표시되었다. 이는 프로덕션 코드를 포함하는 디렉토리
- src/test/java 디렉토리는 "Test Sources Root"로 표시되었다. 이는 테스트 코드를 포함하는 디렉토리
- src/resources 디렉토리는 "Resources Root"로 표시되었다. 이는 애플리케이션에서 사용되는 리소스 파일을 포함하는 디렉토리(ex) 설정 파일)
- test-resources 디렉토리는 "Test Resources Root"로 표시되었다. 이는 테스트에서 사용되는 리소스 파일을 포함하는 디렉토리
- excluded-folder 디렉토리는 "Excluded"로 표시되었다. IntelliJ에서 무시해야 하는 파일이나 폴더를 포함하는 디렉토리.
- generated-sources 디렉토리는 "Generated Sources Root"로 표시되었다. 이는 외부 도구나 프로세스에서 생성된 소스 코드를 포함하는 디렉토리
+++인텔리제이의 구성 요소와 실행 순서
프로젝트: 인텔리제이에서 작업하는 단위. 프로젝트는 여러 모듈로 구성될 수 있으며, 소스 코드, 리소스 파일, 설정 파일 등을 포함
모듈: 프로젝트 내의 독립적인 단위로, 개별적으로 컴파일되고 실행될 수 있다. 각 모듈은 소스 코드, 리소스 파일, 종속성 등을 가질 수 있다
패키지: 소스 코드를 구조화하기 위해 사용되는 단위. 패키지는 클래스와 인터페이스를 그룹화하고, 네임스페이스를 제공한다
클래스: 자바 프로그래밍에서 기본적인 코드 단위. 클래스는 필드, 메서드, 생성자 등을 포함하며, 객체 지향 프로그래밍의 기본 개념
실행 순서: 인텔리제이에서 프로젝트를 실행하는 일반적인 순서
- 프로젝트를 열고 인텔리제이에서 해당 프로젝트를 선택
- 필요한 모듈을 구성하고 의존성을 설정
- 실행하려는 클래스나 메서드를 선택
- 실행 구성을 설정하고 실행
- 실행 결과를 확인하고 디버깅 및 로깅을 수행
'의문점 공부하기 > 🧾공부하며' 카테고리의 다른 글
🧾 Auto commit을 false로 설정해야 하는 이유는???? (0) | 2023.07.26 |
---|---|
🧾 스레드를 재사용해야 하는 이유 (0) | 2023.07.14 |
🧾 여러 스레드가 공유된 메모리에 접근하여 값을 변경하면???? (0) | 2023.07.14 |
🧾 디버깅과 컴파일의 차이와 로깅이란? (0) | 2023.07.07 |
🧾GOF 패턴이란? (0) | 2023.07.07 |