Pergunta relacionada Como configurar IntelliJ IDEA e / ou Maven para adicionar diretórios automaticamente com código-fonte Java gerado usando jaxb2-maven-plugin?
Eu tenho um plugin personalizado que gera fontes sob target/generated-sources
(Observe nenhum nome de ferramenta aqui). Então eu obtenho fontes como target/generated-sources/com/mycompany
... etc.
Este formato não pode ser alterado, então poderei configurar o Intellij para adicioná-lo como uma pasta de origem. A partir de agora, posso ver que o Intellij foi adicionado target/generated-sources/com
como a pasta de origem.
Observe que não tenho a opção de configurar o plugin!
ATUALIZAÇÃO 1 : Não concordo com o fato de que DEVO colocar minhas fontes geradas em uma pasta com o nome da ferramenta. Pode ser uma boa convenção, mas se eu tiver apenas um gerador não preciso colocá-lo lá? Novamente, no meu pom.xml, tenho uma resources
seção que indica claramente que target/generated-sources
deve ser tratada como uma pasta de origem. Isso funciona perfeitamente bem no Eclipse, então não tenho ideia de por que o Intellij não respeitaria minhas configurações.
TL; DR -> Quando coloco target/generated-sources
na seção de recursos pom.xml
por que o Intellij é tão zeloso em adicionar target/generated-sources/com
ao classpath?
fonte
Respostas:
Você pode apenas alterar a estrutura do projeto para adicionar essa pasta como um diretório de "origem".
Estrutura do projeto → Módulos → Clique na
generated-sources
pasta e transforme-a em umasources
pasta.Ou:
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
fonte
mvn idea:idea
resolveu o problema no meu caso. Para registros.Estou usando a solução Maven (aplicativo SpringBoot):
Então, o Intellij importa automaticamente as fontes geradas para o projeto.
fonte
Com o gradle, as configurações do projeto serão apagadas sempre que você atualizar as configurações do gradle. Em vez disso, você precisa adicionar as seguintes linhas (ou semelhantes) em seu build.gradle, estou usando kotlin para:
sourceSets { main { java { srcDir "${buildDir.absolutePath}/generated/source/kapt/main" } } }
fonte
gradle idea
. Obrigado! :)O conserto
Vá para Estrutura do projeto - Módulos - Pastas de código - fonte e localize
target/generated-sources/antlr4/com/mycompany
- clique em Editar propriedades e defina o prefixo do pacote comocom.mycompany
.Esta é exatamente a razão pela qual podemos definir o prefixo do pacote nos diretórios de origem.
Problema diferente, mas relacionado aqui
fonte
src/main/antlr4/<path-to-package>/
, ela apareceria emtarget/generated-sources/antlr4/<path-to-package>
. O IntelliJ marcou automaticamente o diretório correto como uma raiz de fontes e nenhum prefixo de pacote foi necessário. Suspeito que essa correção seja necessária quando as pessoas colocam suas gramáticas diretamente nosrc/main/antlr4
, o que geralmente é recomendado por algum motivo.Quem escreveu esse plugin estragou tudo. Não é assim que se faz!
Qualquer solução alternativa seria um grande hack, informe o desenvolvedor do plugin sobre o bug.
Desculpe, é a única coisa a fazer.
OK, aqui está um hack, diretamente após a execução do seu plugin, use o plugin antrun para mover o diretório para outro lugar:
<plugin> <artifactId>maven-antrun-plugin</artifactId> <version>1.6</version> <executions> <execution> <phase>process-sources</phase> <configuration> <target> <move todir="${project.build.directory}/generated-sources/toolname/com" overwrite="true"> <fileset dir="${project.build.directory}/generated-sources/com"/> </move> </target> </configuration> <goals> <goal>run</goal> </goals> </execution> </executions> </plugin>
Neste exemplo,
toolname
deve ser substituído por qualquer coisa que identifique exclusivamente o plugin que criou o código ecom
representa a raiz dos pacotes criados. Se você tiver várias raízes de pacote, provavelmente precisará de várias<move>
tarefas.Mas se o plugin adicionar a pasta como pasta de origem, você está ferrado.
fonte
target/generated-sources/my-tool
.Talvez você possa adicionar uma etapa à fase de geração de fontes que move a pasta?
fonte
Tive o mesmo problema com o Eclipse alguns meses atrás, ao importar meu projeto. Agora eu tinha o mesmo com o intelliJ. Aqui está como alguém me ajudou a resolver isso no IntelliJ:
Menu => Exibir => Ferramentas janelas => Projeto Maven No valor spring_user => Executar configuração, escolha instalação limpa. Isso deve fazer uma instalação limpa e depois disso você deve ser capaz de ver as classes
fonte
Resolvido removendo o "Excluído" na configuração do módulo (clique com o botão direito no projeto, "Abrir configurações do módulo").
fonte
A única condição de trabalho, após várias tentativas, foi remover a pasta oculta .idea da pasta raiz do projeto e importá-la novamente do Intellij
fonte
Eu queria atualizar o comentário feito anteriormente por DaShaun , mas como é minha primeira vez comentando, o aplicativo não permitiu.
No entanto, estou usando o eclipse e, depois de adicionar o trecho de código de menção abaixo ao meu pom.xml, conforme sugerido por Dashun, e executei o pacote mvn clean para gerar os arquivos de origem avro, mas ainda estava obtendo erro de compilação no espaço de trabalho.
Cliquei com o botão direito em project_name -> maven -> update project e atualizei o projeto, que adicionou o target / generated-sources como uma pasta de origem para meu projeto eclipse.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.4</version> <executions> <execution> <id>test</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/target/generated-sources</source> </sources> </configuration> </execution> </executions> </plugin>
fonte