diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index eb95af8..330d83c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,16 +52,6 @@ jobs: - name: Build with Maven run: mvn -B package - - - name: Create Complete Package - run: | - mkdir -p package - cp target/GhydraMCP-*.zip package/ - cp bridge_mcp_hydra.py package/ - cd package - zip -r GhydraMCP-Complete-${{ steps.set_version.outputs.BUILD_VERSION }}.zip * - mv GhydraMCP-Complete-${{ steps.set_version.outputs.BUILD_VERSION }}.zip .. - cd .. - name: Upload nightly artifacts if: github.ref_type != 'tag' @@ -71,7 +61,7 @@ jobs: path: | target/GhydraMCP-*.zip bridge_mcp_hydra.py - GhydraMCP-Complete-${{ steps.set_version.outputs.BUILD_VERSION }}.zip + target/GhydraMCP-Complete-*.zip - name: Generate Release Notes if: github.ref_type == 'tag' @@ -113,6 +103,6 @@ jobs: files: | target/GhydraMCP-*.zip bridge_mcp_hydra.py - GhydraMCP-Complete-${{ steps.set_version.outputs.BUILD_VERSION }}.zip + target/GhydraMCP-Complete-*.zip draft: false prerelease: false \ No newline at end of file diff --git a/README.md b/README.md index e575037..0edfe69 100644 --- a/README.md +++ b/README.md @@ -149,12 +149,35 @@ client.use_tool("ghydra", "register_instance", {"port": 8193}) 3. Command: `python /ABSOLUTE_PATH_TO/bridge_mcp_hydra.py` # Building from Source -Build with Maven by running: -`mvn clean package assembly:single` +You can build different artifacts with Maven: -The generated zip file includes the built Ghidra plugin and its resources. These files are required for Ghidra to recognize the new extension. +## Build Everything (Default) +Build both the Ghidra plugin and the complete package: +``` +mvn clean package +``` + +This creates: +- `target/GhydraMCP-[version].zip` - The Ghidra plugin only +- `target/GhydraMCP-Complete-[version].zip` - Complete package with plugin and bridge script + +## Build Ghidra Plugin Only +If you only need the Ghidra plugin: + +``` +mvn clean package -P plugin-only +``` + +## Build Complete Package Only +If you only need the combined package: + +``` +mvn clean package -P complete-only +``` + +The Ghidra plugin includes these files required for Ghidra to recognize the extension: - lib/GhydraMCP.jar -- extensions.properties +- extension.properties - Module.manifest diff --git a/pom.xml b/pom.xml index 1fdadc5..aa8a9cb 100644 --- a/pom.xml +++ b/pom.xml @@ -4,101 +4,108 @@ 4.0.0 eu.starsong.ghidra - GhydraMCP + GhydraMCP jar 1.1 GhydraMCP https://github.com/teal-bauer/GhydraMCP + + + UTF-8 + UTF-8 + ${project.basedir}/lib + true + true + - + ghidra Generic 11.3.1 system - ${project.basedir}/lib/Generic.jar + ${ghidra.jar.location}/Generic.jar ghidra SoftwareModeling 11.3.1 system - ${project.basedir}/lib/SoftwareModeling.jar + ${ghidra.jar.location}/SoftwareModeling.jar ghidra Project 11.3.1 system - ${project.basedir}/lib/Project.jar + ${ghidra.jar.location}/Project.jar ghidra Docking 11.3.1 system - ${project.basedir}/lib/Docking.jar + ${ghidra.jar.location}/Docking.jar ghidra Decompiler 11.3.1 system - ${project.basedir}/lib/Decompiler.jar + ${ghidra.jar.location}/Decompiler.jar ghidra Utility 11.3.1 system - ${project.basedir}/lib/Utility.jar + ${ghidra.jar.location}/Utility.jar ghidra Base 11.3.1 system - ${project.basedir}/lib/Base.jar + ${ghidra.jar.location}/Base.jar - + junit junit - 3.8.1 + 4.13.2 test - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.8.1 - - 11 - 11 - - - - - - maven-jar-plugin - 3.2.2 + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 21 + 21 + + -Xlint:-path + + + + + + maven-jar-plugin + 3.2.2 src/main/resources/META-INF/MANIFEST.MF - GhydraMCP - **/App.class - ${project.build.directory} @@ -108,36 +115,48 @@ org.apache.maven.plugins maven-assembly-plugin 3.3.0 - - - - src/assembly/ghidra-extension.xml - - - - GhydraMCP-${project.version} - - - false - - + - make-assembly + plugin-assembly package single + + + src/assembly/ghidra-extension.xml + + GhydraMCP-${project.version} + false + + + + + + complete-package + package + + single + + + + src/assembly/complete-package.xml + + GhydraMCP-Complete-${project.version} + false + - + org.apache.maven.plugins maven-dependency-plugin - 3.1.2 + 3.6.1 + copy-dependencies prepare-package @@ -149,8 +168,68 @@ runtime + + + + validate-system-dependencies + validate + + analyze-only + + + false + + ghidra:Docking + + + ghidra:* + + + + + + + + plugin-only + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + complete-package + none + + + + + + + + + + complete-only + + + + org.apache.maven.plugins + maven-assembly-plugin + 3.3.0 + + + plugin-assembly + none + + + + + + + diff --git a/src/assembly/complete-package.xml b/src/assembly/complete-package.xml new file mode 100644 index 0000000..a5be35a --- /dev/null +++ b/src/assembly/complete-package.xml @@ -0,0 +1,49 @@ + + + + complete-package + + + + zip + + + + false + + + + + ${project.basedir} + + bridge_mcp_hydra.py + README.md + LICENSE + + + + + + + ${project.build.directory} + + GhydraMCP.jar + + GhydraMCP/lib + + + + + src/main/resources + + extension.properties + Module.manifest + + GhydraMCP + + + \ No newline at end of file