문제

나는 항상 Maven 2와 함께 어려움을 겪고 있습니다. 빌드 도구는 방해가되어서는 안됩니다. 최근에 나는 buildr와 gradle을보고 있습니다. Maven 3은 투쟁 중 일부를 고치는 것 같습니다. 그래서 지금 무엇을 가야합니까? buildr? Gradle? 아니면 Maven 3을 1 년 동안 기다리십니까?

도움이 되었습니까?

해결책

빌드 시스템은 마법의 총알이 아닙니다. Maven은 나에게 원인보다 더 많은 문제를 해결한다는 것을 알았지 만, 플러그인을 단점을 ret다는 것이 매우 편안합니다. 또한 수백 개의 프로젝트를 다루므로 Maven의 상속 및 의존성 처리가 매우 도움이됩니다.

조금 찾아 보면 Buildr과 Gradle은 모두 문제가있는 것을 볼 수 있습니다 (개미와 아이비의 경우 동일). 일반적으로 다른 문제 세트와 가장 고통스러운 것을 찾는 사례입니다.

특히 Maven에 대해 당신을 괴롭히는 것이 있습니까, 아니면 일반적인 가려움증입니까? 그것이 특별한 문제라면 Jira에서 Maven 3 문제, 문제가 해결되지 않으면, 당신은 그것을 올릴 수 있습니다. 그렇지 않으면 기다리는 요점이 거의 없을 수도 있습니다.

다른 팁

나는 Maven 3에서 너무 많이 기대하지 않을 것입니다. 빌드 도구의 Maven 가계도 뒤에있는 사람들은 항상 프로젝트 빌드가 균질하다는 가정을 유지해 왔습니다. 즉, 모든 빌드 문제는 근본적으로 동일한 문제로 요약됩니다. 이 세상에 대한 이러한 견해는 반대되는 견해에 직면 할 때 상당히 일관되게 개최 될 수 있지만 비용이 듭니다. Maven ( "스크립트를 스크립트하고 싶을 때 잘못 알고 싶다는 것을 알고 싶을 때"), 번거로운 플러그인 API ( "일반 Maven 사용자는 플러그인을 쓰지 않아야한다") 및 중앙 저장소 ( "우리 모두 동일한 종속성을 가지고 있습니다. ")이 가장 중요한 가정의 모든 증언입니다.

실제 세계에서는 다양한 이유로 소프트웨어를 구축하기 때문에 실제 빌드 문제는 이질적입니다. 그들은 모두 독특한 문제를 해결하기 위해 우리 모두가 '구멍을 뚫는'것처럼 '발전'합니다. 추상화 수준에 관계없이 임의의 빌드 문제를 비교할 때는 항상 유사점을 찾을 수 있습니다. Maven의 디자인에 대한 몰락 인 것은 이러한 유사성의 존경과 차이의 비난이며, 그것이 너무 많은 플라크를 이끌어내는 이유입니다. 기본적으로 Maven은 전망에서 권위주의적이고 유토피아 적입니다.

추신 : Maven은 컨벤션 오버 구성 및 리포지토리 사용 아이디어와 같은 좋은 기능을 가지고 있습니다 (이 아이디어의 Maven 구현은 번거 롭습니다).

우리는 여기에서 Maven을 사용하지만 간단한 프로젝트를 벗어나면 Pom.xml이 점점 더 복잡해지기 시작합니다. 당신은 도대체 당신이 원하는 것을 할 수 있도록 POM을 구성하는 방법과 다양한 문제를 해결하는 방법을 어떻게 구성하는지 많은 시간을 보내기 시작합니다.

나를 정말로 얻은 것은 우리가 구축하는 귀였습니다. 우리는 그 귀 파일에 여러 번 전쟁을 벌이고 있으며, Maven은 일반적으로 전쟁에서 도서관을 고수합니다. 그러나 전쟁의 크기를 줄이고 항아리를 동일하게 유지하기 위해 항아리를 Ear의 Lib 디렉토리의 전쟁 사이에 공유하고 싶었습니다.

불행히도 Maven은 이것을 잘 처리하지 않습니다. 우리는 각 전쟁의 poms에 대해 이것을 수동으로 구성한 다음이 모든 종속성을 귀의 POM에 추가해야했습니다.

다른 프로젝트에는 HTML 기반 도움말 파일이 있습니다. 도움말을 작성하는 사람들은 Microsoft Word로 작성한 다음 프로그램을 사용하여 HTML로 변환합니다. 단일 문자 변경은 수백 파일에서 반향을 일으킬 수 있습니다.

이 문제를 해결하기 위해 도움말 시스템은 소스 저장소에 단일 지핑 파일로 저장됩니다. 문서 팀이 새로운 도움말 파일 세트를 작성하면이를 지퍼하고 저장소의 내용을 교체합니다.

따라서 내 빌드의 일부는이 파일을 풀고 전쟁에 배치하고 있습니다. 개미에서 쉽게 할 수 있고, Antrun 플러그인을 사용하지 않는 한 Maven에서는 할 수 없습니다.이 플러그인을 사용하여 Maven이 완전히 날려 버린 플러그인없이 처리 할 수없는 문제를 처리 할 수있는 Ant Code를 작성할 수 있습니다.

Maven이 무엇을하고 있는지 알 수 있지만 이론은 현실보다 앞서 나갔습니다. 내가 찾은 것은 아이비와 개미가 POM을 쓰고 유지하는 모든 문제없이 Maven이하는 대부분의 종속성 검사를 할 수 있다는 것입니다.

아직 Maven을 사용하지 않는다면 ANT를 먼저 사용해보십시오. 그런 다음 Maven 3이 나오면 시도해보십시오. 나는 Maven 1에서 Maven 2 로의 전환을 기억합니다. 그들은 완전히 서로 양립 할 수 없었으며 Maven 1을 사용하여 배운 모든 것은 쓸모가 없었습니다. Maven 2에서 프로젝트를 배우고 다시 실행하여 Maven 3의 모든 것을 재조정하는 것은 어리석은 일입니다.

Maven 3.x는 이미 IDE에 포함되어 있습니다 (적어도 Netbeans에서 확인하십시오 이 링크 더 많은 정보를 얻으려면). Maven 3.X와 함께 NetBeans와 함께 Maven 프로젝트를 구축하면 오늘 플레이 할 수 있습니다.

또 다른 좋은 소식은 Maven이 IJB/WS를 IDE 프로젝트 (적어도 NetBeans에서) 통합하는 데 더 많은 '엔터프라이즈'지원을 받았다는 것입니다.

그래서 나는 생산 빌드를 위해 Maven 2.x를 고수하고 개발을 위해 Maven 3.x와 함께 플레이 할 것입니다.

Maven 2와 3은 다양한 프로젝트에서 저를 위해 완벽하게 일하고 있습니다. 현재 Eclipse Maven 플러그인과 함께 잘 작동하는 Maven 3 Alpha 7을 사용하고 있습니다.

Maven은 ANT와 완벽하게 통합하여 양방향으로 통합합니다. 현재 프로젝트에서는 복잡한 통합 테스트를 수행하기 위해 Maven을 ANT에서 여러 번 호출합니다. 마찬가지로, 우리는 Maven의 Antrun 플러그인을 통해 개미를 사용하고 있으며 자체 Maven 플러그인도 썼습니다. 그건 그렇고, 이것은 몇 분의 문제이며 주석이 달린 pojo를 쓰는 것으로 요약됩니다.

많은 개발자들이 규칙이나 컨벤션을 좋아하지 않기 때문에 Maven은 많은 Flak을 얻습니다. 간단히 말해서, 아무도 당신이 Maven을 사용하도록 강요하지 않습니다. 궁극적 인 자유를 원한다면 언제든지 가입 한 모든 프로젝트에 대해 자신의 빌드 프로세스를 다시 작성하십시오. 그러나 모든 프로젝트에서 맞춤형 빌드 프로세스로 휠을 다시 발명하지 않고 소프트웨어를 만들고 싶다면 Maven으로 가십시오.

코드를 잘 관리하고 잘 정의 된 모듈로 유지하고 빌드 시스템 간 포팅은 사소한 문제가됩니다.

현재 Maven-2는 프로젝트의 2/3 중 하나에 적합한 선택입니다. 정말 간단한 경우, 개미는 여전히 괜찮습니다. 정말 복잡한 경우, Maven-2 및 기타 도구 (Antrun과 같은)의 하이브리드는 불가피 해집니다.

왜 Maven-2에 문제가 있는지 잘 모르겠습니다.

개미와 buildr와 다릅니다. 스크립팅이 아니라 빌드 프로세스를 설명하기위한 도구라는 점에서 다릅니다. 복잡한 빌드, 여러 동적 부품이있는 것과 중첩 및/또는 과도 의존성이있는 것들이 설명하기 어렵 기 때문에 빌드하기가 어렵습니다.

격자를 줘 https://github.com/hackingspirit/lattice 시도. 나는 저자입니다. 여기에 특종이 있습니다.

격자에서 빌드 파일은 XML이 아니라 파이썬 언어로 작성됩니다. 벤트는 파이썬이 지원하는 훨씬 더 나은 가독성과 강력한 명령 빌드 스크립팅입니다. 다중 모듈 프로젝트의 경우. 격자는 토폴로지 분류를 사용하여 각 모듈을 구축하기위한 올바른 순서를 결정합니다. 또한 격자가 모듈 의존성을 분석하여 모듈 컴파일이 어떻게 병렬화 될 수 있는지 결정할 계획입니다. Lattice의 소스 코드는 매우 적어서 현재 약 500 줄의 Python 소스 코드로 구성됩니다.

Maven에 대해 불평하는 사람들은 사용 가능한 플러그인을 조사하는 데 약간의 추가 시간을 소비해야한다고 생각합니다. Maven이 엄격하고 Custom Build Logic을 사용하기가 어렵다고 불평하는 의견에 응답하여 빌드 프로세스에 대한 세밀한 제어 기능을 제공하기가 어렵습니다. : http://maven.apache.org/plugins/maven-antrun-plugin). 나는 수년에 걸쳐 Maven 빌드를 커스터마이징 한 큰 성공을 거두었습니다. 기본적으로 Maven 빌드의 일부로 Ant 명령을 실행할 수 있으며 Ant와 거의 모든 것을 수행 할 수 있습니다.)

ANT IVY는 동일한 종속성 관리 Maven과 동일한 종속성 관리를 수행합니다 (실제로 동일한 URL 저장소를 포함한 Maven의 전체 종속성 관리 인프라를 사용하지만 모든 POM 구성 혼란이 없습니다.

아이비가있는 개미는 Maven을 사용하고 싶지 않은 사람들의 종속성 문제를 처리하는 방법 일 수 있습니다. Maven이 해결해야 할 물건의 90%를 해결합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top