0. Descrição do problema
Quando o projeto é empacotado, verifica-se que a execução do maven install reportará um erro: o símbolo não pode ser encontrado
[ERROR] /Library/project/work/fantu_java/digitalenterprise_business/bladex-biz/blade-service-api/blade-fleet-basic-api/src/main/java/org/springblade/fleetbasic/feign/IBasicGoldMedalDriverAreaFeign.java:[18,38] 找不到符号
符号: 变量 APPLICATION_FLEET_BASIC_PROVIDER_NAME
位置: 接口 org.springblade.common.constant.LauncherConstant
[ERROR] /Library/project/work/fantu_java/digitalenterprise_business/bladex-biz/blade-service-api/blade-fleet-basic-api/src/main/java/org/springblade/fleetbasic/feign/IBasicFileFeign.java:[20,38] 找不到符号
符号: 变量 APPLICATION_FLEET_BASIC_PROVIDER_NAME
位置: 接口 org.springblade.common.constant.LauncherConstant
1. Soluções
Antes de tudo, precisamos esclarecer as possíveis razões para esse problema:
- O formato de codificação do projeto não é uniforme
- A versão do JDK usada pela codificação do projeto é inconsistente
- A dependência pom não é adicionada ou não pode ser lida, o que geralmente é o problema de números de versão inconsistentes
- Os bugs da ferramenta de desenvolvimento geralmente são resolvidos reiniciando ou atualizando a versão
O primeiro motivo que eu descartei é o problema de dependência do pom, pois as dependências correspondentes foram adicionadas ao projeto, e é normal rodar em idea, ou seja, maven install irá reportar um erro
Em segundo lugar, verifiquei que a versão jdk do projeto é 1.8, então o segundo motivo também está descartado
Então tentei especificar o formato de codificação no pom novamente, mas ainda relatou um erro após a reinstalação.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.3</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
Descobri que não conseguia passar por aqui, então suspeitei que era um problema com o ambiente local, então instalei novamente após reiniciar. Encontrado ainda errado. Tente deixar outros colegas maven instalarem, desta vez há um fenômeno mais mágico, alguns colegas podem instalar normalmente, e alguns colegas relatam o mesmo erro que eu.
Quando você vê isso, você consegue pensar no que causou isso?
2. Solução Final
Na verdade, às vezes precisamos enxergar a essência da resolução de problemas e fortalecer nosso conhecimento. Assim como esta pergunta, os motivos que aprendi são os quatro mencionados acima, e procurei informações relevantes, e existem apenas esses quatro.
E alguns colegas podem fazer as malas, outros não, o que significa que não é um problema do meio ambiente. Então eu verifiquei novamente as dependências do pom, focando no pacote jar onde a classe de interface LauncherConstant está localizada, que está em nosso módulo commons customizado. Quando verifiquei o pom deste commons, encontrei o problema
O método de empacotamento em commons, não sei qual colega o definiu como pom, o que leva ao fato de que commons não foi empacotado em jar, portanto, não pode ser referenciado. Alguns colegas podem empacotar normalmente porque o módulo commons não foi reinstalado e ainda existem pacotes jar do módulo commons no repositório maven local.
A solução também é muito simples, ou seja, alterar o pacote para jar, ou excluir esse rótulo diretamente, pois o método de embalagem padrão é jar caso o método de embalagem não seja preenchido no pom
<packaging>jar</packaging>
Também nos lembra de prestar atenção aos detalhes no desenvolvimento do projeto.Se alguns pequenos pontos de conhecimento não forem bem compreendidos, é provável que causem problemas difíceis de solucionar.