# Git: untergeordnetes Verzeichnis mit hochladen



## TM69 (29. Sep 2022)

Ich habe folgende .gitignore - Datei

```
HELP.md
TODO.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/
!target/myapp

### Angular ####
# Compiled output
target/myapp/dist
target/myapp/tmp
target/myapp/out-tsc
target/myapp/bazel-out

# Node
target/myapp/node_modules
target/myapp/npm-debug.log
target/myapp/yarn-error.log

# IDEs and editors
target/myapp/.idea/
target/myapp/.project
target/myapp/.classpath
target/myapp/.c9/
target/myapp/*.launch
target/myapp/.settings/
target/myapp/*.sublime-workspace

# Visual Studio Code
target/myapp/.vscode/*
!target/myapp/.vscode/settings.json
!target/myapp/.vscode/tasks.json
!target/myapp/.vscode/launch.json
!target/hurricane/.vscode/extensions.json
target/hurricane/.history/*

# Miscellaneous
target/hurricane//.angular/cache
target/hurricane/.sass-cache/
target/hurricane//connect.lock
target/hurricane//coverage
target/hurricane//libpeerconnection.log
target/hurricane/testem.log
target/hurricane//typings

# System files
target/hurricane/.DS_Store
target/hurricane/Thumbs.db

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
**/.vscode/
```

Mein Projekt besteht aus einem Java-Backend und ein Angular-Frontendbereich.
Der Angular - Teil befindet sich im Verzeichnis target.
Ich würde gerne alles (bis auf Ausnahmen) auf github hochladen lassen. Das target - Verzeichnis, um das es insbesondere geht soll, bis auf das Angular-Verzeichnis nicht hochgeladen werden.
Obige .gitignore lädt zwar alles auf GitHub hoch, wie gewünscht, allerdings soll wird das Angular-Verzeichnis nicht mit hochgeladen.
Wie müsste ich es abändern?


----------



## LimDul (29. Sep 2022)

Warum soll irgendwas aus dem target Folder hochgeladen werden?

Der Target-Folder wird bei einem mvn clean gelöscht - das heißt, da darf nichts sein, was wichtig ist.


----------



## KonradN (29. Sep 2022)

Sollte die Angular App nicht innerhalb des src/main/resources Ordner generiert werden? So hatte ich das zumindest bei meinen Projekten immer gemacht (da hat dann mein Spring Backend das Angular Frontend mit ‚ausgeliefert‘)


----------



## TM69 (29. Sep 2022)

KonradN hat gesagt.:


> Sollte die Angular App nicht innerhalb des src/main/resources Ordner generiert werden? So hatte ich das zumindest bei meinen Projekten immer gemacht (da hat dann mein Spring Backend das Angular Frontend mit ‚ausgeliefert‘)


Dank dir für deinen Ratschlag. Ich kann dazu nur noch sagen: "Wo du recht hast du Recht!" 😁


----------



## KonradN (29. Sep 2022)

TM69 hat gesagt.:


> Dank dir für deinen Ratschlag. Ich kann dazu nur noch sagen: "Wo du recht hast du Recht!" 😁


Reicht dir diese Information so erst einmal, oder sollte ich einmal schauen, ob ich in meinem Projekt die jeweiligen Einstellungen einmal finden kann? (Das ist halt auch nicht meine Stärke - ich bin eigentlich nur auf dem Backend und hatte das nur mal als Test/Spielerei gebaut. Sozusagen erste Schritte mit Angular. Aber die Einstellungen in der pom.xml und so kann ich gerne heraus suchen.)


----------



## KonradN (29. Sep 2022)

Da ich jetzt etwas Zeit habe und an meinem Rechner sitze, zeige ich es einfach einmal, wie ich es bei mir gemacht habe:

a) Angular Projekt erzeugte ich in src/main/frontend meines Projektes. Erzeugt wird es wie gewohnt mit ng.

b) Maven Projekt erweitern - hier geht es in erster Linie um zwei Aufrufe über das maven-execute-plugin: 
b.1) npm um die Abhängigkeiten zu laden / installieren
b.2) ng zum bauen

```
<!-- Build Angular Frontend -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>${codehaus.exec.plugin}</version>
                <executions>
                    <execution>
                        <id>exec-npm-install</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <workingDirectory>${project.basedir}/src/main/frontend</workingDirectory>
                            <executable>npm</executable>
                            <arguments>
                                <argument>install</argument>
                            </arguments>
                        </configuration>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>exec-npm-ng-build</id>
                        <phase>generate-sources</phase>
                        <configuration>
                            <workingDirectory>${project.basedir}/src/main/frontend</workingDirectory>
                            <executable>ng</executable>
                            <arguments>
                                <argument>build</argument>
                                <argument>--no-progress</argument>
                                <argument>--base-href=/</argument>
                            </arguments>
                        </configuration>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
```

c) Zielort des Angular Projektes: im src/main/frontend/angular.json findet sich der outputPath. Den habe ich ensprechend umgesetzt zu: `"outputPath": "../resources/public",`

Was man hier noch diskutieren könnte: Gehören die generierten Dateien in die Sourceverwaltung oder nicht? Eigentlich nicht, d.h. die erzeugten Dateien könnte man in der .gitignore hinzufügen.
Ich selbst habe diese Dateien bei mir aber eingecheckt - aber das war ein wenig durchdachter Schritt und das war bei mir auch alles mehr nur Tests.


----------



## TM69 (29. Sep 2022)

KonradN hat gesagt.:


> Reicht dir diese Information so erst einmal, oder sollte ich einmal schauen, ob ich in meinem Projekt die jeweiligen Einstellungen einmal finden kann? (Das ist halt auch nicht meine Stärke - ich bin eigentlich nur auf dem Backend und hatte das nur mal als Test/Spielerei gebaut. Sozusagen erste Schritte mit Angular. Aber die Einstellungen in der pom.xml und so kann ich gerne heraus suchen.)


Nein, danke. Habs jetzt erstmal so wie du sagtest realisiert. Langt fürs erste.


----------

