crxtool
Library for packing and unpacking Chrome extension .crx
files.
Core Library
Maven Coordinates
<dependency>
<groupId>com.github.mike10004</groupId>
<artifactId>crxtool-core</artifactId>
<version>0.15</version>
</dependency>
Usage
Unpacking
try (InputStream in = new FileInputStream("my_extension.crx") {
CrxMetadata metadata = CrxParser.getDefault().parseMetadata(in);
System.out.println("id = " + metadata.getId());
// handle remainder of stream as a zip archive
try (ZipInputStream zin = new ZipInputStream(in)) {
// ...
}
}
Packing
Path extensionDir = new File("manifest-parent-dir").toPath();
java.security.KeyPairGenerator keyGen = java.security.KeyPairGenerator.getInstance("RSA");
java.security.SecureRandom random = new java.security.SecureRandom();
keyGen.initialize(1024, random);
java.security.KeyPair keyPair = keyGen.generateKeyPair();
try (OutputStream out = new FileOutputStream("new_extension.crx")) {
CrxPacker.getDefault().packExtension(extensionDir, keyPair, out);
}
Maven Plugin
Maven Coordinates
<plugin>
<groupId>com.github.mike10004</groupId>
<artifactId>crxtool-maven-plugin</artifactId>
<version>0.15</version>
</plugin>
Usage
Place extension source files in src/main/extension
.
<build>
<plugins>
<plugin>
<groupId>com.github.mike10004</groupId>
<artifactId>crxtool-maven-plugin</artifactId>
<version>0.15</version>
<executions>
<execution>
<id>pack</id>
<goals>
<goal>pack-extension</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>attach-artifact</id>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>${project.build.directory}/${project.artifactId}-${project.version}.crx</file>
<type>crx</type>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Credits
The extension ID construction is probably from this Stack Overflow answer. The make-page-red example extension file in the test resources is from developer.chrome.com.