Como realmente se usa o Maven?

Olá pessoal.
Estava verificando que os projetos hoje usam bastante gerenciadores de dependência.
Meus projetos em PHP já uso bastante o Composer que é excelente.
Como também desenvolvo em Java comecei a iniciar os novos projetos usando o Maven.
Sinceramente estou odiando o Maven, não tem nenhuma facilidade em utilizar, documentação pobre, algumas não explicam realmente como utilizar, transporta o projeto para implantação não roda, não complia, ou seja, pra mim o Maven é inútil.
Prefiro baixar os .jar e colocar na pasta libs/ e certeza que vai funcionar com muito mais facilidade.
Exemplo com o Composer, ele já baixa tudo e você pode subir o projeto pronto com todas as dependências já acessíveis.
Se tiver alguém que possa me esclarecer como realmente o Maven pode facilitar agradeceria muito.

Concordo que não é tão fácil de usar, mas chamar 66581 tags no stackoverflow e o site oficial com documentação de toda funcionalidade do Maven de “documentação pobre” acho que é simplesmente uma impressão errada sua. Agora, não compilar é basicamente culpa do desenvolvedor. O Maven não vai fazer mágica pra corrigir erro do desenvolvedor.

Ele pode ser difícil de configurar, mas é absurdamente melhor do que não usar nenhuma ferramenta de build. Eu jamais iniciaria um projeto baixando jar manualmente. Isso é suicídio. Conforme o projeto vai crescendo isso vai se tornar um inferno incontrolável de gerenciar, um problema bem conhecido chamado JAR Hell.

Tudo que você citou de vantagem do Composer o Maven também faz (baixar todas as dependências e subir o projeto pronto com as dependências). Se tem alguma dúvida específica poste com mais detalhes aqui no fórum.

Uma alternativa ao Maven é o Gradle. Não usei muito, mas dizem que é mais fácil de configurar (não usa XML, já uma coisa boa) e já ouvi falar que é um pouco mais rápido também. Não vou arriscar falar mais além disso porque não conheço muito bem, mas ouço falar bem.

1 curtida

Vamos lá.
Quando é criado um projeto com o Composer, todas as dependência fica numa pasta dentro do projeto, nem preciso ter o Composer instalado no servidor para deploy.
Estou a 4 dias tentando fazer o deploy para teste e mesmo após instalar o maven no servidor, executar a compilação ocorre erro.
Realmente tem muita informação sobre o Maven quando se pesquisa, mas nenhuma realmente mostra como configurar corretamente e dar deploy no projeto.
Já segui a documentação oficial e também não funciona.
O engraçado é que ele baixa as dependência para outra pasta, mas não funciona, é muito confuso a utilização, se eu pegar o as dependências e deixar junto com o jar do projeto funciona, se fora pra fazer isso eu baixo e coloco na mesma pasta e da na mesma isso não ajuda em nada.

O projeto que você tá trabalhando é web ou desktop ? Você está gerando o .war através do Maven com o comando package ? As dependência estão declaradas com o escopo correto ?

O projeto é desktop, roda em background.
As dependências estão corretas, está sendo executado normalmente no ambiente de desenvolvimento, mas no servidor não funciona, já foi instalado o maven, baixou as dependências mas não funciona.
Só funciona se eu pegar as dependências e colocar junto do jar gerado ai é maravilha, mas não é o que esperava do funcionamento do maven.

Veja se isso te ajuda:

Gradle.

2 curtidas

Decidi esquecer pelo menos por enquanto gerenciar dependências no java, maven não funciona bem, é muito problemático de configurar, documentação não é clara no que deve ser feito, vou continuar baixando os jar até pq são poucos cerca de 3 no máximo.

Você estudou a ferramenta ou tá tentando copiar e colar código da internet até funcionar? Você sabe como funciona o classpath da JVM? Sabe o que é um jar (de verdade, a estrutura interna)?

Por padrão, quando o maven constrói um artefato, ele só coloca no zip os arquivos do seu projeto, e não as bibliotecas de terceiros. As bibliotecas de terceiros são incluídas no classpath tanto em tempo de compilação como em tempo de execução, conforme você configura as dependências do projeto.

Se você que o artefato gerado carregue todas as dependências que ele precisa para ser executado, você precisa de um Uber Jar. Tem um plugin pro maven que faz isso.

O Maven é uma ferramenta fantástica, mas tem que parar e estudar os conceitos pra conseguir usar com maestria. Se não tiver paciência não vai conseguir usar nunca mesmo. No seu caso acho que maven vai mais atrapalhar do que ajudar, já que você aparenta não dominar nem mesmo a plataforma.

1 curtida

Você estudou a ferramenta ou tá tentando copiar e colar código da internet até funcionar? Você sabe como funciona o classpath da JVM? Sabe o que é um jar (de verdade, a estrutura interna)?

Sei muito bem como é a estrutura interna de um jar.
Sim estudei, fui na documentação oficial, configurei o servidor que receberia o projeto, baixou todas as dependências e não funcionou.

O Maven é uma ferramenta fantástica, mas tem que parar e estudar os conceitos pra conseguir usar com maestria. Se não tiver paciência não vai conseguir usar nunca mesmo. No seu caso acho que maven vai mais atrapalhar do que ajudar, já que você aparenta não dominar nem mesmo a plataforma.

Não uso apenas java para desenvolvimento, desenvolvo com Node e PHP e uso gerenciamento de dependência neles sem nenhum problema, é fácil intuitivo e sem muita frescura.
E realmente atrapalhou muito perdi 4 dias de desenvolvimento, achando que iria ajudar no gerenciamento como JÁ USO EM PHP E NODE.
Alguns projetos já em produção, não é de hoje.

Sabe e não entende o motivo pelo qual o maven baixa as dependências em outra pasta.

Não disse que você não sabe de nada nem que não sabe colocar um projeto em produção. Meu problema é com o tom pedante que você chegou aqui, falando que a ferramenta não funciona direito, quando na verdade é você que não sabe utilizá-la.

Parabéns pelos projetos, boa sorte com o que está mexendo agora!

Não disse que você não sabe de nada nem que não sabe colocar um projeto em produção. Meu problema é com o tom pedante que você chegou aqui, falando que a ferramenta não funciona direito, quando na verdade é você que não sabe utilizá-la.

São 4 dias perdidos, pra algo que deveria ser simples, pra fazer a mesma coisa que já faço com Node ou PHP/Composer não levei nem 5 minutos pra entender o funcionamento deles e criar projetos.
E não foi na primeira vez que não funcionou, até seguindo documentação oficial não funcionou.

Cara, existe uma indústria inteira usando essa parada e você realmente acha que o problema é a ferramenta? kkkkkkkkkkk tudo bem então, me desculpe.

É questão de opção ou necessidade, não sendo necessário também prefiro não usar, seja maven, gradle, nuget, etc., embora participe sem problemas de projetos que use.

Se não for rotineiro ficar adicionando ou atualizando libs e sim atender o negócio, nem esquente com essas ferramentas, quanto menos parafernalhas melhor, usando só que for ajudar sua rotina.

Vou dizer aqui de novo: Gradle. É a opção mais fácil para quem está começando agora no mundo de gerenciamento de dependencias no Java. Uma linha de código e ele baixa, importa e instala todas as dependências que você precisa.

Maven eu pessoalmente nunca usei, mas detesto XML. Se fosse a necessidade, usaria sem problema.

Acho que o maior problema é que ele veio de um “ecossistema” de desenvolvimento mais produtivo, no mundo Java tudo é mais complicado. Até se adaptar, é horrível mesmo trabalhar com Java.

Em se tratando de Java Oracle acho o maven mais difundido, maioria das equipes que tenho contato usam maven, então prefiro não inventar sem necessidade, pelo menos enquanto maven tiver forte.

Também tive muita dificuldade quando comecei a usar o maven, hoje não vivo sem ele, e so da uma estudada sobre a estrutura básica no pom.xml, como funciona cada escopo e cada goal do maven, não é muito complicado e ele também empacota o projeto facilmente.