Fala-se muito na internet sobre como o Maven é ruim. Tenho usado alguns recursos do Maven há alguns anos e o benefício mais importante, a meu ver, é o gerenciamento de dependências.
A documentação do Maven é menos do que adequada, mas geralmente quando preciso realizar algo, descubro uma vez e funciona (por exemplo, quando implementei a assinatura dos jars). Não acho que o Maven seja ótimo, mas resolve alguns problemas que sem ele seria uma dor genuína.
Então, por que Maven tem uma reputação tão ruim e quais problemas com Maven posso esperar no futuro? Talvez existam alternativas muito melhores que eu não conheço? (Por exemplo, nunca olhei para Ivy em detalhes.)
NOTA: Esta não é uma tentativa de causar um argumento. É uma tentativa de limpar o FUD.
Respostas:
Eu pesquisei o maven cerca de seis meses atrás. Estávamos iniciando um novo projeto e não tínhamos nenhum legado para sustentar. Dito isto:
Grande parte da minha antipatia pelo maven pode ser explicada pelo seguinte trecho de Better Builds with Maven:
Minha sugestão: se você não consegue transmitir as ideias com palavras, não tente escrever um livro sobre o assunto, porque não vou absorver as ideias telepaticamente.
fonte
fonte
Eu certamente reclamei e gemi sobre maven no passado. Mas agora, eu não estaria sem ele. Eu sinto que os benefícios superam em muito qualquer problema. Principalmente:
As desvantagens para mim são principalmente:
Eu realmente acredito que vale a pena gastar um pouco de tempo para conhecer o maven.
fonte
Minha experiência prática em dois grandes projetos é que gastamos 1.000 - 1.500 horas para cada projeto em problemas relacionados ao maven, excluindo um esforço de 500 horas de mudança do maven 1 para o maven 2.
Desde então, devo dizer que odeio o maven. Estou ficando frustrado ao pensar nisso.
A integração do Eclipse é horrível. (Tivemos problemas intermináveis com a geração de código, por exemplo, onde o eclipse saiu de sincronia com o código gerado e exigiu uma reconstrução completa, muitas vezes. A culpa é tanto maven quanto eclipse, mas eclipse é mais útil do que maven e digamos emacs, então o eclipse fica e o maven tem que ir.)
Tínhamos muitas dependências e, como descobrimos, erros de sintaxe são, na verdade, enviados para repositórios maven públicos com bastante frequência, o que pode arruinar horas do seu valioso tempo. Cada semana. A solução alternativa é ter um proxy ou repositório controlado localmente, o que também demorou um pouco para ser acertado.
A estrutura do projeto Mavens não é realmente adequada para desenvolvimento com Eclipse, e o tempo de construção em Eclipse aumenta.
Um efeito do problema de geração e sincronização de código, tivemos que reconstruir do scrach com bastante frequência, reduzindo seu ciclo de código / compilação / teste para um ciclo de compilação / websurf / sleep / die / código infinito, enviando você de volta aos anos 90 e Tempos de compilação de 40 minutos.
A única desculpa para o maven é a resolução de dependência, mas eu gostaria de fazer isso de vez em quando, não em todas as compilações.
Para resumir, o maven está tão longe do KISS quanto pode estar. E também, os defensores tendem a ser o tipo de pessoa que comemora mais no dia de seu aniversário quando sua idade é primo. Sinta-se à vontade para votar contra mim :-)
fonte
Maven é ótimo. O motivo de sua reputação tem a ver com a acentuada curva de aprendizado, na minha opinião. (que estou finalmente perto de superar)
A documentação é um pouco difícil de percorrer, simplesmente porque parece que há muito texto e coisas novas para compreender antes que comece a fazer sentido. Eu digo que tempo é tudo de que precisamos para Maven ser mais amplamente elogiado.
fonte
Porque Maven é um dispositivo para reduzir homens adultos a massas soluçando de terror absoluto.
fonte
Prós:
Contras:
Concorrência:
Resumindo: todos os nossos projetos são feitos com a Maven há vários anos.
fonte
Acho que tem má fama com pessoas que têm os projetos mais simples e os mais complicados.
Se você está construindo um único WAR a partir de uma única base de código, ele o força a mover a estrutura do projeto e listar manualmente os dois dos três jars no arquivo POM.
Se você estiver construindo um EAR a partir de um conjunto de nove protótipos de arquivo EAR com alguma combinação de cinco arquivos WAR, três EJBs e 17 outras ferramentas, jars de dependência e configurações que requerem ajustes de arquivos MANIFEST.MF e XML em recursos existentes durante a construção final; então o Maven provavelmente é muito restritivo. Tal projeto se torna uma confusão de perfis aninhados complicados, arquivos de propriedades e uso indevido dos objetivos de construção do Maven e da designação do Classificador.
Portanto, se você está nos últimos 10% da curva de complexidade, é um exagero. Nos 10% superiores dessa curva, você está em uma camisa de força.
O crescimento da Maven é porque funciona bem para os 80% intermediários
fonte
Minha experiência ecoa a frustração de muitas das postagens aqui. O problema com o Maven é que ele envolve e oculta os detalhes do gerenciamento de construção em sua busca pela bondade automagical definitiva. Isso o torna quase desamparado se quebrar.
Minha experiência é que qualquer problema com o maven rapidamente degenerou em uma caça ao snipe de várias horas por meio de redes de arquivos xml aninhados, em uma experiência semelhante ao tratamento de canal.
Eu também trabalhei em lojas que dependiam muito do Maven, as pessoas que gostaram (que gostaram pelo aspecto "aperte um botão, faça tudo pronto") não entenderam. As compilações de maven tinham um milhão de alvos automáticos, que tenho certeza que seriam úteis se eu quisesse passar horas lendo o que eles faziam. Melhores 2 alvos que funcionam que você compreende totalmente.
advertência: trabalhei pela última vez com Maven há 2 anos, pode estar melhor agora.
fonte
Como Glenn, não acho que Maven tenha uma reputação ruim, mas uma reputação mista. Estou trabalhando há 6 meses exclusivamente tentando migrar um projeto bastante grande para o Maven e isso mostra claramente os limites da ferramenta.
Na minha experiência, Maven é bom para:
E tem alguns problemas com:
Para dar um contexto, existem cerca de 30 desenvolvedores trabalhando neste projeto, e o projeto já existe há mais de 5 anos, então: muito legado, muitos processos já implementados, muitas ferramentas proprietárias personalizadas já implementadas. Decidimos tentar migrar para o Maven porque o custo de manutenção de nossas ferramentas proprietárias estava ficando muito alto.
fonte
Eu gostaria de responder a algumas das reclamações feitas neste fórum:
Isso não é verdade. A grande vantagem do Maven é usá-lo para gerenciar suas dependências de uma forma racional e se você quiser fazer isso no maven e fazer todo o resto no form, você pode. Veja como:
Agora você tem um objeto de caminho de classe chamado 'maven.classpath' que contém todas as dependências de maven definidas no arquivo pom. Tudo que você precisa é colocar o jar de tarefas do maven ant no diretório lib do seu ant.
A dependência padrão e o processo de busca de plug-ins dependem de uma conexão de rede, sim, mas apenas para a construção inicial (ou se você alterar as dependências ou plug-ins em uso). Depois disso, todos os frascos são armazenados em cache localmente. E se você quiser forçar a conexão sem rede, você pode dizer ao maven para usar o modo offline.
Não está claro se isso se refere ao formato do arquivo ou ao problema de 'convenção versus configuração'. Para o último, existem muitos padrões invisíveis, como a localização esperada dos arquivos e recursos de origem java, ou a compatibilidade da origem. Mas isso não é rigidez, é colocar padrões razoáveis para você, de modo que você não precise defini-los explicitamente. Todas as configurações podem ser substituídas facilmente (embora para um iniciante possa ser difícil encontrar na documentação como alterar certas coisas).
Se você está falando sobre o formato do arquivo, isso é abordado na resposta à próxima parte ...
Em primeiro lugar, não vejo como você pode reclamar que algum aspecto de algo 'não é melhor do que formiga' como uma justificativa para ter uma má reputação. Em segundo lugar, embora ainda seja XML, o formato do XML é muito mais definido. Além disso, por ser assim definido, é muito mais fácil fazer um editor de cliente compacto sensato para um POM. Já vi páginas longas e scripts de construção que pulam por todo o lugar. Qualquer editor de script de construção de formigas não tornará isso mais palatável, apenas outra longa lista de tarefas interconectadas apresentadas de uma maneira ligeiramente diferente.
Posto isto, existem algumas queixas que tenho visto aqui que têm ou tiveram alguma validade, sendo a maior delas
Ao que minha resposta é dupla. Em primeiro lugar, o Maven é uma ferramenta muito mais nova que o Ant ou o Make, então você deve esperar que leve algum tempo para chegar ao nível de maturidade desses aplicativos. O segundo é, bem, se você não gosta, conserte . É um projeto de código aberto e usá-lo e reclamar de algo que qualquer um pode ajudar a resolver parece bastante asinino para mim. Não gosta da documentação? Contribua com ele para torná-lo mais claro, mais completo ou mais acessível para um iniciante.
O problema de compilações reproduzíveis divide-se em dois problemas, intervalos de versão e atualizações automáticas de plug-ins do maven. Para os upates do plug-in, bem, a menos que você tenha certeza de que, ao reconstruir um projeto um ano depois, está usando exatamente o mesmo JDK e exatamente a mesma versão do Ant, bem, este é o mesmo problema com um nome diferente. Para intervalos de versão, eu recomendo trabalhar em um plugin que irá produzir um pom temporário com versões bloqueadas para todas as dependências diretas e transitivas e torná-lo parte do ciclo de vida da versão do maven. Dessa forma, seus poms de versão de lançamento são sempre descrições exatas de todas as dependências.
fonte
Ele merece a reputação que conquistou. Nem todo mundo precisa da estrutura rígida que os desenvolvedores do Maven consideraram apropriada para cada projeto. É tão inflexível. E o que é 'Pro' para muitas pessoas, o gerenciamento de dependências, é IMHO seu maior 'contra'. Não me sinto absolutamente confortável em baixar os jars da rede e perder o sono por causa de incompatibilidades (sim, o modo offline existe, mas então por que deveria ter todas aquelas centenas de arquivos xml e somas de verificação). Eu decido quais bibliotecas uso e muitos projetos têm sérias preocupações sobre compilações que dependem da conexão de rede.
Pior ainda, quando as coisas não funcionam, você está absolutamente perdido. A documentação é uma merda, a comunidade não tem noção.
fonte
Um ano depois, queria atualizar isso: não tenho mais essa opinião sobre a comunidade Maven. Eu não escreveria esta resposta se a pergunta fosse feita hoje. Vou adicionar minha opinião atual como uma resposta separada.
Esta é uma resposta muito subjetiva, mas a questão é sobre opiniões, então ...
Gosto do Maven, e gosto mais quanto mais o conheço. Uma coisa afetando meus sentimentos sobre isso, entretanto: a comunidade maven é amplamente centrada em torno da Sonatype ("a empresa maven", é onde muitos dos chefões da Maven estão trabalhando), e a Sonatype está empurrando seus produtos corporativos de forma bastante agressiva para a comunidade.
Um exemplo: o fluxo do Twitter "Maven Book" vincula a uma suposta introdução ao gerenciamento de repositórios .
Desculpe, mas essa "introdução" é metade informação, metade argumento de venda para o Nexus. Questionário: há algum outro gerenciador de repo além do Nexus e do Nexus Pro? Além disso, o que isso tem a ver com o livro Maven supostamente de código aberto? Ah, certo, o capítulo sobre gerenciamento de repositório foi dividido em um livro separado ... sobre Nexus. Hã. Se eu contribuir com o livro Maven, recebo uma taxa de referência se causar um aumento nas vendas do Nexus?
Imagine se você estivesse participando de um fórum de desenvolvimento Java e estivesse claro que os funcionários da Sun discutindo Java aproveitariam todas as oportunidades possíveis para falar sobre o NetBeans e o "NetBeans Pro". Depois de um tempo, ele perde um pouco de seu sentimento de comunidade. Nunca tive uma experiência assim com o Ant.
Tendo dito tudo isso, eu acho que o Maven é um sistema muito interessante e útil (não estou chamando-o de uma ferramenta, como o Ant é, o Maven é mais amplo do que isso) para configuração de desenvolvimento de software e gerenciamento de build. O gerenciamento de dependências é uma bênção e uma maldição às vezes, mas é revigorante - e certamente não é a única vantagem que o Maven oferece. Provavelmente estou reagindo um pouco fortemente ao xelim Sonatype, mas isso fere Maven por associação, na minha opinião. Não sei se essa opinião é compartilhada por mais alguém.
fonte
Acho que o Maven tem uma má reputação porque impõe estrutura ao seu projeto, enquanto outras ferramentas, como o Ant, permitem que você defina completamente a estrutura da maneira que desejar. Concordo também que a documentação é ruim, mas acho que principalmente a má reputação que o Maven recebe é porque as pessoas estão muito acostumadas com o Ant.
fonte
Muita magia.
fonte
Porque as pessoas insatisfeitas reclamam, enquanto as satisfeitas não dizem que estão satisfeitas. Meu ponto é que há muito mais usuários maven satisfeitos do que insatisfeitos, mas os últimos fazem mais barulho. Este é um padrão comum da vida real também (ISP, operadora de telefonia, transportes, etc, etc).
fonte
O problema mais importante para mim é que o Maven, quando não configurado corretamente, pode não produzir compilações repetíveis devido a:
Compare isso com uma construção de formigas que - embora prolixo e cansativo IMO - funciona já que todos os jars são verificados localmente.
A parte boa é que os problemas são solucionáveis:
fonte
ótima ideia - má implementação.
Mudei um projeto do Ant para o Maven recentemente. Funcionou bem no final, mas tive que usar duas versões diferentes de maven-assembly-plugin e maven-jar-plugin no mesmo pom (consegui dois perfis) porque o que funcionava em uma versão estava quebrado em outra.
Então foi uma grande dor de cabeça. A documentação nem sempre é boa, mas devo admitir que foi relativamente fácil pesquisar as respostas no Google.
certifique-se de sempre especificar as versões dos plugings que você usa. Não espere que a nova versão seja compatível com versões anteriores.
Acho que a polêmica vem do fato de que o maven ainda evolui e o processo às vezes é doloroso.
Saudações
v.
fonte
Eu gosto de maven. Eu usei desde pré 1.0. É uma ferramenta poderosa que, no geral, me economizou uma quantidade considerável de tempo e melhorou minha infraestrutura de desenvolvimento. Mas posso entender a frustração de algumas pessoas. Vejo 3 tipos de frustração:
Para o primeiro caso, problemas reais - bem, claro, existem problemas, os POMs são prolixos, a documentação poderia ser melhor. Apesar disso, é possível obter bons resultados com o maven em um tempo rápido. Eu me encolho toda vez que consigo construir um projeto com o Ant e tento importar isso para o meu IDE. A configuração da estrutura de diretórios pode demorar muito. com o maven, basta abrir o arquivo POM no IDE.
Para o segundo caso, Maven é complexo e mal-entendidos são comuns. Se o maven 3 puder encontrar uma maneira de lidar com essa complexidade (ou mesmo complexidade percebida), isso seria bom. maven exige um investimento considerável, mas, em minha experiência, o investimento se paga rapidamente.
Para o último ponto, acho que a reclamação sobre as dependências transitivas do maven é provavelmente o exemplo mais conhecido.
Dependências transitivas são a natureza do software real que utiliza a reutilização. DLLs do Windows, pacotes Debian, pacotes java, pacotes OSGi, até mesmo o arquivo de cabeçalho C ++ inclui todos têm dependências e sofrem o problema de dependência. Se você tem duas dependências e cada uma usa uma versão diferente da mesma coisa, você deve tentar resolver isso de alguma forma. O Maven não tenta resolver o problema de dependência, mas sim o traz para a frente e fornece ferramentas para ajudar a gerenciar o problema, como relatar conflitos e fornecer dependências consistentes para uma hierarquia de projetos e, de fato, fornece controle absoluto sobre dependências de um projeto.
A abordagem de incluir manualmente dependências com cada projeto (um autor diz que verifica todas as dependências no controle de origem) corre o risco de usar a dependência errada, como atualizações negligenciadas quando uma biblioteca é atualizada sem verificar as atualizações para suas dependências. Para um projeto de qualquer tamanho, o gerenciamento manual de dependências certamente causará erros. Com o maven, você pode atualizar a versão da biblioteca que usa e as dependências corretas são incluídas. Para gerenciamento de mudanças, você pode comparar o antigo conjunto de dependências (para o seu projeto como um todo) com o novo conjunto, e quaisquer mudanças podem ser cuidadosamente examinadas, testadas etc.
O Maven não é a causa do problema de dependência, mas o torna mais visível. Ao lidar com os problemas de dependência, o maven torna qualquer "ajuste" de dependência explícito (uma mudança em seu POM substituindo a dependência), ao invés de implícito, como é o caso com jars gerenciados manualmente no controle de versão, onde os jars estão simplesmente presentes, sem nada para suporte tempo eles são a dependência correta ou não.
fonte
Eu acredito que Maven tem uma má reputação porque a maioria dos detratores não observou a combinação de Maven + Hudson + Sonar . Se tivessem, eles estariam perguntando "como faço para começar"?
fonte
Algumas das minhas chateações com Maven:
A definição XML é super desajeitada e prolixa. Eles nunca ouviram falar de atributos?
Em sua configuração padrão, ele sempre vasculha a rede em cada operação. Independentemente de ser útil para alguma coisa, parece extremamente bobo precisar de acesso à Internet para "limpar".
Novamente no padrão, se eu não tiver o cuidado de especificar os números exatos da versão, ele puxará as atualizações mais recentes da rede, independentemente de essas versões mais novas introduzirem erros de dependência. Em outras palavras, você é colocado à mercê do gerenciamento de dependência de outras pessoas.
A solução para todo esse acesso à rede é desligá-lo adicionando a
-o
opção. Mas você deve se lembrar de desligá-lo se realmente quiser fazer a atualização das dependências!Outra solução é instalar seu próprio servidor de "controle de origem" para dependências. Surpresa: a maioria dos projetos já tem controle de origem, só que funciona sem configuração adicional!
As compilações do Maven são incrivelmente lentas. Mexer com atualizações de rede alivia isso, mas as compilações do Maven ainda são lentas. E terrivelmente prolixo.
O plugin Maven (M2Eclipse) se integra muito mal com o Eclipse. O Eclipse se integra razoavelmente bem com o software de controle de versão e com o Ant. A integração do Maven é muito desajeitada e feia em comparação. Eu mencionei lento?
Maven continua com erros. As mensagens de erro são inúteis. Muitos desenvolvedores estão sofrendo com isso.
fonte
Boa pergunta. Acabei de começar um grande projeto no trabalho e parte dos projetos anteriores foi para introduzir modularidade em nossa base de código.
Já ouvi coisas ruins sobre o maven. Na verdade, é tudo o que já ouvi sobre isso. Eu olhei como apresentá-lo para resolver o pesadelo de dependência que estamos enfrentando. O problema que vi com o Maven é que ele é bastante rígido em sua estrutura, ou seja, você precisa se adequar ao layout do projeto para que funcione para você.
Eu sei o que a maioria das pessoas vai dizer - você não precisa se conformar com a estrutura. De fato, isso é verdade, mas você não saberá disso até que tenha ultrapassado a curva de aprendizado inicial, momento em que investiu muito tempo para jogar tudo fora.
Ant é muito usado hoje em dia, e eu adoro isso. Levando isso em consideração, me deparei com um gerenciador de dependências pouco conhecido chamado Apache Ivy . Ivy se integra muito bem ao Ant e é rápido e fácil obter a configuração e o funcionamento da recuperação básica do JAR. Outro benefício do Ivy é que ele é muito poderoso, mas bastante transparente; você pode transferir compilações usando mecanismos como scp ou ssh com bastante facilidade; recuperação de dependência 'encadeada' sobre sistemas de arquivos ou repositórios remotos (compatibilidade com repositório Maven é um de seus recursos populares).
Dito isso, achei muito frustrante usar no final - a documentação é abundante, mas está escrita em um inglês ruim, o que pode aumentar a frustração ao depurar ou tentar descobrir o que deu errado.
Vou revisitar o Apache Ivy em algum momento durante este projeto e espero fazê-lo funcionar corretamente. Uma coisa que ele fez foi nos permitir, como uma equipe, descobrir de quais bibliotecas dependemos e obter uma lista documentada.
Em última análise, acho que tudo se resume a como você trabalha como indivíduo / equipe e o que você precisa para resolver seus problemas de dependência.
Você pode achar úteis os seguintes recursos relacionados ao Ivy:
fonte
Eu amo o Maven - ele aumenta a produtividade e estou muito feliz por não estar mais usando o Ant (ufa!)
Mas se eu pudesse mudar as coisas, seria:
pom.xml
arquivo menos prolixofonte
Existem muitas razões pelas quais as pessoas não gostam de Maven, mas vamos admitir que são muito subjetivas . O Maven hoje com alguns livros bons (e gratuitos), documentação melhor, conjunto maior de plug-ins e muitos builds de projetos de sucesso de referência não é o mesmo Maven de um ou dois anos atrás.
Usar o Maven em projetos simples é muito fácil, com os maiores / complicados é necessário mais conhecimento e compreensão mais profunda da filosofia Maven - talvez em nível de empresa uma posição para guru Maven como administrador de rede. A principal fonte de declarações de ódio do Maven geralmente é a ignorância .
Outro problema para o Maven é a falta de flexibilidade como, por exemplo, no Ant. Mas lembre-se de que Maven tem um conjunto de convenções - aderir a elas parece ser difícil no início, mas no final muitas vezes evita problemas.
O sucesso atual do Maven prova seu valor. Claro que ninguém é perfeito e Maven tem alguns contras e suas peculiaridades, mas na minha opinião Maven lentamente balança seus oponentes.
fonte
Eu não diria que tem uma má reputação, mas sim uma má reputação. Se o seu projeto seguir o paradigma da "convenção sobre a configuração" defendido pelo Maven, você poderá obter muita vantagem com ele. Se o seu projeto não se encaixa bem na visão de mundo do Maven, ele pode se tornar um fardo.
Para isso, se você tiver controle sobre o projeto, o Maven pode ser o caminho a percorrer. Mas se você não fizer isso e o layout for determinado por alguém que não é fã de Maven, pode ser mais problemático do que vale a pena. Os projetos Maven mais felizes são provavelmente aqueles que começaram como projetos Maven.
fonte
Para mim, existem tantos prós quanto contras em usar maven versus formiga para projetos internos. Para projetos de código aberto, entretanto, acho que o Maven teve um grande impacto em tornar muitos projetos muito mais fáceis de construir. Não faz muito tempo que levava horas para compilar o projeto OSS Java médio (baseado em formigas), tendo que definir uma tonelada de variáveis, baixar projetos dependentes, etc.
Você pode fazer qualquer coisa com o Maven que você pode fazer com o Ant, mas onde o Ant não encoraja nenhum padrão, o Maven sugere fortemente que você siga sua estrutura, ou será mais trabalhoso. É verdade que algumas coisas são difíceis de configurar com o Maven e que seriam fáceis de fazer com o Ant, mas o resultado final é quase sempre algo mais fácil de construir da perspectiva de pessoas que querem apenas verificar um projeto e pronto.
fonte
Se você vai apostar seu negócio ou trabalho em um projeto de desenvolvimento, você quer estar no controle das fundações - ou seja, o sistema de construção. Com Maven, você não está no controle. É declarativo e opaco. Os desenvolvedores do maven-framework não têm ideia de como construir um sistema transparente ou intuitivo e isso fica claro na saída do log e na documentação.
O gerenciamento de dependências é muito tentador, pois pode incomodar você em algum momento no início do projeto, mas esteja avisado, está fundamentalmente quebrado e acabará lhe causando muitas dores de cabeça. Quando duas dependências têm dependências temporárias incompatíveis, você será bloqueado por um ninho de ratos de complexidade que interromperá a compilação de toda a equipe e bloqueará o desenvolvimento por dias. O processo de construção com Maven também é notoriamente inconsistente para diferentes desenvolvedores em sua equipe devido aos estados inconsistentes de seus repositórios locais. Dependendo de quando um desenvolvedor criou seu ambiente ou em quais outros projetos está trabalhando, eles terão resultados diferentes. Você descobrirá que está excluindo todo o seu repositório local e fazendo com que o Maven baixe novamente os jars com muito mais frequência do que na primeira vez que foi configurado para um branch de desenvolvimento. Eu acredito que o OSGI é uma iniciativa que está tentando resolver esse problema fundamental. Eu diria que talvez se algo precisa ser tão complexo, a premissa fundamental esteja errada.
Eu sou um usuário / vítima maven há mais de 5 anos e tenho que dizer que você vai economizar muito mais tempo para apenas verificar suas dependências em seu repositório de origem e escrever tarefas simples e agradáveis. Com o ant, você sabe EXATAMENTE o que seu sistema de compilação está fazendo.
Já experimentei muitos, muitos homens perdidos de tempo em várias empresas diferentes devido a problemas com o Maven.
Recentemente, tentei trazer um antigo projeto GWT / Maven / Eclipse de volta à vida e 2 semanas de todo o meu tempo livre depois, ainda não consigo construí-lo de maneira consistente. É hora de cortar minhas perdas e desenvolver usando formiga / eclipse que eu penso ...
fonte
A resposta curta: achei muito difícil manter um sistema de compilação Maven e gostaria de mudar para o Gradle assim que possível.
Trabalho com Maven há mais de quatro anos. Eu me consideraria um especialista em sistemas de construção porque nas últimas (pelo menos) cinco empresas em que estive, fiz grandes reformas na infraestrutura de construção / implantação.
Algumas das lições que aprendi:
Analisei o Gradle um pouco e parece que ele tem o potencial de ser o melhor dos dois mundos, permitindo uma mistura de descrição de construção declarativa e procedural.
fonte
É mais complicado do que a linguagem que você usou para escrever seu projeto. Configurá-lo corretamente é mais difícil do que programar.
fonte
Eu lutei para superar a maioria / todos os negativos mencionados aqui e objeções semelhantes de colegas de equipe, e concordo com todos eles. Mas eu persisti e continuarei a fazê-lo, mantendo firme o único objetivo que apenas o maven (ou gradle, talvez) realmente atinge.
Se você está otimizando para colegas ( desenvolvedores de código aberto ), ant / make / tudo o que servirá. Se você estiver entregando funcionalidade a não pares ( usuários ), apenas maven / gradle / etc servirá.
Apenas o maven permite que você libere um pequeno pacote de código-fonte + poms (sem lib / binário embutido de dependência jars com nomes enigmáticos e nenhuma informação de dependência) com um layout de projeto padrão bem documentado que pode ser carregado por qualquer IDE por alguém que não tenha absorvido as convenções de layout idiossincráticas dos desenvolvedores. E há um procedimento de instalação de um botão (instalação mvn) que constrói tudo enquanto adquire quaisquer dependências ausentes.
O resultado é um acesso fácil que esses usuários podem seguir para encontrar o caminho até o código, onde os poms podem apontar a documentação relevante.
Tirando esse requisito (indispensável), não gosto de maven tanto quanto qualquer pessoa.
fonte