Skip to content
On this page

Migração v4.00.* → v4.1.*

Resumo rápido

Rode pwsh scripts/migrate.ps1 -ProjectRoot . -BumpPom (ou o equivalente bash) no seu projeto que consome a biblioteca e depois mvn test-compile. Os scripts estão na pasta scripts/ do repositório do Java_NFe.

O que mudou

A v4.1.* consolidou ~48 sub-packages JAXB em 2 packages:

Antes (v4.00.*)Depois (v4.1.*)
br.com.swconsultoria.nfe.schema_4.enviNFe.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema_4.consReciNFe.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema_4.consSitNFe.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema_4.consStatServ.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema_4.inutNFe.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema_4.comum.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema.consCad.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema.distDFe.* / resNFe.* / comum.*br.com.swconsultoria.nfe.schemas.*
br.com.swconsultoria.nfe.schema.cce.* / envcce.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envEventoCancNFe.* / eventoCancNFe.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envEventoCancSubst.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envConfRecebto.* / confRecebto.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envEpec.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.eventoGenerico.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envEventoAtorInteressado.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envEventoEConf.* / envEventoCancEConf.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envEventoInsucessoNFe.* / envEventoCancInsucessoNFe.*br.com.swconsultoria.nfe.schemas_eventos.*
br.com.swconsultoria.nfe.schema.envEventoEntregaNFe.* / envEventoCancEntregaNFe.*br.com.swconsultoria.nfe.schemas_eventos.*

Classes renomeadas em schemas_eventos

Como todos os eventos agora vivem no mesmo package, os nomes genéricos foram renomeados por evento:

Classe v4.00.*Classe v4.1.*Evento
TEnvEvento / TRetEnvEvento (CancNFe)TEnvEventoCancelamento / TRetEnvEventoCancelamentoCancelamento
TEnvEvento / TRetEnvEvento (envcce)TEnvEventoCartaCorrecao / TRetEnvEventoCartaCorrecaoCarta de Correção
TEnvEvento / TRetEnvEvento (envEpec)TEnvEventoEpec / TRetEnvEventoEpecEPEC
TEnvEvento / TRetEnvEvento (envConfRecebto)TEnvEventoManifestacao / TRetEnvEventoManifestacaoManifestação Destinatário
TEnvEvento / TRetEnvEvento (CancSubst)TEnvEventoCancelamentoSubstituicao / TRetEnvEventoCancelamentoSubstituicaoCancelamento por Substituição
TEnvEvento / TRetEnvEvento (AtorInteressado)TEnvEventoAtorInteressado / TRetEnvEventoAtorInteressadoAtor Interessado
TEnvEvento / TRetEnvEvento (EConf)TEnvEventoConciliacaoFinanceira / TRetEnvEventoConciliacaoFinanceiraECONF
TEnvEvento / TRetEnvEvento (CancEConf)TEnvEventoCancelamentoConciliacaoFinanceira / TRetEnvEventoCancelamentoConciliacaoFinanceiraCancelamento ECONF
TEnvEvento / TRetEnvEvento (InsucessoNFe)TEnvEventoInsucessoEntrega / TRetEnvEventoInsucessoEntregaInsucesso de Entrega
TEnvEvento / TRetEnvEvento (CancInsucessoNFe)TEnvEventoCancelamentoInsucessoEntrega / TRetEnvEventoCancelamentoInsucessoEntregaCanc. Insucesso de Entrega
TEnvEvento / TRetEnvEvento (EntregaNFe)TEnvEventoComprovanteEntrega / TRetEnvEventoComprovanteEntregaComprovante de Entrega
TEnvEvento / TRetEnvEvento (CancEntregaNFe)TEnvEventoCancelamentoComprovanteEntrega / TRetEnvEventoCancelamentoComprovanteEntregaCanc. Comprovante de Entrega

As classes internas (TEvento.InfEvento, TRetEnvEvento.RetEvento, etc.) seguem o mesmo padrão: o prefixo do nome externo muda.

Outras classes que mudaram de nome

Antes (v4.00.*)Depois (v4.1.*)Motivo
schema.resevento.ResEventoschemas_eventos.ResumoEventoNome normalizado
schema_4.consSitNFe.TProcEventoschemas.TProcEventoConsSitNFeConflito com TProcEvento* de schemas_eventos
schema.envcce.TretEventoschemas_eventos.TRetEventoCartaCorrecaoPadronização de capitalização + sufixo
schema.envConfRecebto.TretEventoschemas_eventos.TRetEventoManifestacaoidem

Eventos da Reforma Tributária

Cada XSD de evento (e110001, e112110-150, e211110-150, e212110-120, e412120-130, e210200-240, 110150...) gera uma classe DetEvento<código> top-level em schemas_eventos:

AntesDepois
schema.evento110001.DetEventoschemas_eventos.DetEvento110001
schema.evento112110.DetEventoschemas_eventos.DetEvento112110
schema.evento112110.DetEvento.GConsumoschemas_eventos.DetEvento112110.GConsumo
schema.evento211110.DetEvento.GCredPresschemas_eventos.DetEvento211110.GCredPres

Como migrar automaticamente

Faça backup (commit ou branch) antes.

PowerShell (Windows / Linux / macOS — recomendado):

powershell
# Simulação (sem alterar arquivos):
pwsh scripts/migrate.ps1 -ProjectRoot . -DryRun

# Aplicar nas fontes + atualizar <java-nfe.version> no pom.xml:
pwsh scripts/migrate.ps1 -ProjectRoot . -BumpPom

# Se a sua versão atual não é a 4.00.51:
pwsh scripts/migrate.ps1 -ProjectRoot . -OldVersion 4.00.49 -BumpPom

Bash (alternativa, mais limitada):

bash
bash scripts/migrate.sh src/main/java --dry-run
bash scripts/migrate.sh src/main/java
bash scripts/migrate.sh src/test/java

O migrate.sh não atualiza o pom, não renomeia o nome simples no corpo do arquivo (TEnvEvento → TEnvEventoCancelamento) e não trata os eventos individuais por código. Para projetos grandes, prefira o migrate.ps1.

⚠️ Breaking changes de API

APIAntesDepoisO que fazer
TProtNFe.InfProt.getDhRecbto()XMLGregorianCalendarString (ISO 8601 com offset, ex. "2024-01-15T10:30:00-03:00")Para LocalDateTime: OffsetDateTime.parse(valor).atZoneSameInstant(ZoneId.systemDefault()).toLocalDateTime()
TTribNFCe.getGIBSCBSMono() / setGIBSCBSMono() (v4.3.0)existiaremovido pelo PL 010gAjuste a montagem de NFC-e com monofasia

O que o script NÃO faz

  1. Imports wildcard (import ...schema_4.*;): o prefixo é trocado, mas pode surgir ambiguidade; resolva os imports individualmente.
  2. TUf em schemas_eventos: existe um TUf para eventos e outro em schemas para a NF-e. Confira de qual package vem o import.
  3. Reflection / Class.forName(...): strings com o nome completo das classes precisam ser atualizadas à mão.
  4. APIs que mudaram de tipo: veja a tabela acima.

Verificação pós-migração

bash
mvn test-compile
mvn test

Erros cannot find symbol indicam exatamente qual classe/método precisa de ajuste manual. O guia original está em MIGRATION.md.

MIT License.